几个VMware中国的人搞了一个容器镜像仓库。
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。前端
下图展现harbor主要的功能组件和信息流向:
主要组件包括proxy,他是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中经过深蓝色先标识;ui提供了一个web管理页面,固然还包括了一个前端页面和后端API,底层使用mysql数据库;registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后经过hook通知ui建立repository,上图经过红色线标识,固然registry的token认证也是经过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回须要加载adminserver的配置,经过灰色线标识;jobsevice是负责镜像复制工做的,他和registry通讯,从一个registry pull镜像而后push到另外一个registry,并记录job_log,上图经过紫色线标识;log是日志汇总组件,经过docker的log-driver把日志汇总到一块儿,经过浅蓝色线条标识。node
基于角色的访问控制--RBAC。用户分为三种角色:项目管理员(MDRWS)、开发人员(RWS)和访客(RS),固然还有一个最高管理员权限admin系统管理员。
M:管理、D:删除、R:读取、W:写入、S:查询,很是细致的权限管理体系。固然一个用户能够在不一样的项目里面扮演不一样角色,这个和现实的用户管理体系很是吻合。python
项目管理是系统最主要的一个功能模块,项目是一组镜像仓库的逻辑集合,是权限管理和资源管理的单元划分。一个项目下面有多个镜像仓库,而且关联多个不一样角色的成员,镜像复制也是基于项目的,经过添加复制规则,能够将项目下面的镜像从一个harbor迁移到另外一个harbor,而且能够经过日志查看复制过程,并有retry机制。mysql
配置管理主要是配置harbor的认证模式,企业内部使用,一般都是对接到公司LDAP上面,固然harbor也支持数据库认证;还能够设置token的有效时间。用户对镜像的pull和push操做均可以被harbor记录下来,这样为排查文件提供了重要手段。harbor还集成了clair镜像扫描功能,它是cereos开发的一款漏洞扫描工具,能够检查镜像操做系统以及上面安装包是否与已知不安全的包版本相匹配,从而提升镜像安全性。linux
经过三个harbor完成高可用部署,前面经过负载均衡器对外提供服务。共享数据库与缓存。结构以下:nginx
本章节内容参考原文:https://blog.csdn.net/u010278923/article/details/77941995 git
若是须要详细了解docker有他相关操做,请详见《docker在Ubuntu下1小时快速学习》。如下操做步骤均在root用户下操做,2个版本任选其一github
一、进入https://download.docker.com/linux/ubuntu/dists/页面
二、在页面中会看到ubuntu不一样版本的代号,选择本身对应的版本进入,这次安装的是ubuntu16.04,所以选择xenial链接进入web
三、而后一路选择xenial/pool/stable/amd64/,stable是稳定版本,ubuntu须要的是amd64的软件格式
四、在https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/页面就能找打所须要的稳定版本dockersql
五、右键点击在所须要的版本上,选择复制链接地址,便可获得下载地址路径,以下:
https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
一、检查内核是否符合要求,Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,建议在Ubuntu14.04版本
root@duke:/var/cache/apt/archives# uname -r
3.13.0-135-generic
二、安装docker
root@duke:~/docker# wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb --2017-12-19 19:30:29-- https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb 正在解析主机 download.docker.com (download.docker.com)... 52.85.158.200, 52.85.158.223, 52.85.158.109, ... 正在链接 download.docker.com (download.docker.com)|52.85.158.200|:443... 已链接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度: 19183424 (18M) [application/x-debian-package] 正在保存至: “docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb” docker-ce_17.03.2~ce-0~ubuntu-xenial_ 100%[======================================================================>] 18.29M 26.0KB/s in 11m 35s 2017-12-19 19:42:05 (27.0 KB/s) - 已保存 “docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb” [19183424/19183424]) root@duke:~/docker# dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
三、启动docker 后台服务
root@duke: service docker start
start: Job is already running: docker
一、进入https://github.com/moby/moby/releases页面
二、点击按钮,进入以页面就能够根据选择选取版本
三、当前要选择docker-ce_17.03.2~ce或者docker-1.13.1,所以通过翻页后,找到对应版本,点击进入页面,找到downloads信息后,就能够找ubuntu系统上进行下载
四、Docker的tgz包加压后,并不能加载到系统服务中,因此不太推荐此种方式安装,建议仍是采用deb包安装方式,能够省去没必要要的麻烦
一、检查内核是否符合要求,Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,建议在Ubuntu14.04版本
root@duke:/var/cache/apt/archives# uname -r
3.13.0-135-generic
二、安装docker
root@duke:~/docker# wget https://get.docker.com/builds/Linux/x86_64/docker-1.13.1.tgz
--2017-12-20 13:57:23-- https://get.docker.com/builds/Linux/x86_64/docker-1.13.1.tgz
正在解析主机 get.docker.com (get.docker.com)... 54.182.1.40, 54.182.1.36, 54.182.1.148, ...
正在链接 get.docker.com (get.docker.com)|54.182.1.40|:443... 已链接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 27851024 (27M) [application/x-tar]
正在保存至: “docker-1.13.1.tgz”
docker-1.13.1.tgz 100%[======================================================================>] 26.56M 56.1KB/s in 9m 35s
2017-12-20 14:07:00 (47.3 KB/s) - 已保存 “docker-1.13.1.tgz” [27851024/27851024])
如下操做步骤均在root用户下操做,2个方法任选其一
一、运行如下命令下载最新版本的docker-compose并进行安装
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
二、更改二进制文件的权限,使其可以运行
chmod +x /usr/local/bin/docker-compose
三、测试安装
docker-compose --version
一、安装python源
apt-get update apt-get install python-pip
二、删除老版docker-compose
pip uninstall docker-compose
三、安装docker-compose
pip install docker-compose
四、测试安装
docker-compose --vesion
资源 | 配置 | 描述 |
---|---|---|
CPU | 最少 2 CPU | 4CPU(推荐) |
内存 | 最少 4GB | 8GB(推荐) |
磁盘 | * | * |
软件名 | 版本 |
|
---|---|---|
Python | 2.7或更高版本 | 注意: 你可能必须在Linux发行版(Gentoo,Arch)上安装Python,默认状况下没有安装Python解释器 |
Docker | 1.10或更高版本 | 有关安装说明,请参考: https://docs.docker.com/engine/installation/ |
Docker-Compose | 1.6.0或更高版本 | 有关安装说明,请参考: https://docs.docker.com/compose/install/ |
Openssl | 推荐最新版本 | 为Harbor生成证书和密钥 |
端口 | 协议 |
|
---|---|---|
443 | HTTPS | Harbor UI和API将接受此端口上的https协议请求 |
4443 | HTTPS | 只有在启用Notary时才须要链接到Docker Content Trust服务 |
80 | HTTP | Harbor UI和API将接受此端口上的http协议请求 |
官方本获取页面,点击下载
版本分为在线安装板和离线安装版本,根据需求选择对应版本下载便可。
在线版本和离线版本安装方法同样,本文以离线安装为主。
tar xvf harbor-offline-installer-v1.7.0-rc2.tgz
解压压缩包会获得harbor文件夹,harbor.cfg配置文件位于文件夹根目录。在harbor.cfg中有两类参数,必需参数和可选参数。
参数 |
|
---|---|
必要参数 | 须要在配置文件中设置这些参数。若是用户更新harbor.cfg并运行install.sh脚本以从新安装Harbor,更改的参数将生效。 |
可选参数 | 这些参数对于更新是可选的,即用户能够将它们保留为默认值,并在启动Harbour后在Web UI上更新它们。若是已经配置harbor.cfg,这些参数只会在首次启动Harbour时生效。harbor.cfg将忽略对这些参数的后续修改。 |
必要参数
参数名 |
|
---|---|
hostname | 目标主机的主机名,用于访问UI和Harbor服务。它应该是目标计算机的IP地址或域名(FQDN),例如,192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1做为主机名,由于外部客户端须要访问Harbor服务! |
ui_url_protocol | ( http或https。默认为http)用于访问UI和令牌/通知服务的协议。若是启用了公证,则此参数必须为https。默认状况下,这是http。要设置https协议,请参阅使用HTTPS访问配置Harbor。 |
db_password | 用于db_auth的MySQL数据库的root密码。生产环境请修改此密码 |
max_job_workers | (默认值为3)做业服务中的最大复制工做数。对于每一个镜像复制做业,程序将存储库的全部标记同步到远程目标。增长此数量能够在系统中实现更多并发复制做业。可是,因为每一个复制进程都消耗必定的网络/CPU/IO资源,请根据主机的硬件资源仔细选择该参数的值。 |
customize_crt | (on或off,默认为on),若是此属性on,准备脚本建立私钥和根证书,用于生成/验证registry的令牌。当外部源提供密钥和根证书时,将此属性设置为off。有关详细信息,请参阅自定义密钥和harbor令牌服务证书。 |
ssl_cert | SSL证书的路径,仅在协议设置为https时应用 |
ssl_cert_key | SSL密钥的路径,仅在协议设置为https时应用 |
secretkey_path | 用于加密或解密复制策略中远程Harbor密码的密钥路径。 |
log_rotate_count | 日志文件在被删除以前会被轮转log_rotate_count次。若是count为0,则删除旧版本而不是轮转。 |
log_rotate_size | 仅当日志文件大于log_rotate_size字节时才会轮转日志文件。若是大小后跟k,则假定大小以千字节为单位。若是使用M,则大小以兆字节为单位,若是使用G,则大小为千兆字节。尺寸100,尺寸100k,尺寸100M和尺寸100G都是有效的。 |
可选参数
参数名 |
|
---|---|
Email settings | Harbor须要这些参数才能向用户发送“密码重置”电子邮件,而且仅在须要该功能时才作配置。另外,请注意,在默认状况下SSL链接没有启用,若是你的SMTP服务器须要SSL,那么你应该经过设置email_ssl = TRUE参数来启用SSL,但不支持STARTTLS。若是电子邮件服务器使用自签名证书或不受信任证书,则须要设置email_insecure = true。有关email_identity的详细说明,请参阅rfc2595 - email_server = smtp.mydomain.com - email_server_port = 25 - email_identity = - email_username = sample_admin@mydomain.com - email_password = abc - email_from = admin [sample_admin@mydomain.com(mailto:sample_admin@mydomain.com) - email_ssl = false - email_insecure = false |
harbor_admin_password | 管理员的初始密码。此密码仅在Harbor首次启动时生效。以后将忽略此设置,而且应在UI中设置管理员密码。请注意:默认用户名/密码为admin/Harbor12345 |
auth_mode | 使用的身份验证类型。默认状况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。重要信息:从现有Harbor实例升级时,必须确保在启动新版本的Harbor以前,harbor.cfg配置文件中auth_mode相同。不然,用户可能没法在升级后登陆。 |
ldap_url | LDAP链接URL(例如ldaps://ldap.mydomain.com)。 仅在auth_mode设置为ldap_auth时使用。 |
ldap_searchdn | 具备搜索LDAP/AD服务器权限的用户的DN(例如uid=admin,ou=people,dc=mydomain,dc=com)。 |
ldap_search_pwd | ldap_searchdn指定的用户密码。 |
ldap_basedn | 查找用户的基本DN,例如ou=people,dc=mydomain,dc=com。 仅在auth_mode设置为ldap_auth时使用。 |
ldap_filter | 用于查找用户的搜索过滤器,例如(objectClass=person)。 |
ldap_uid | 用于在LDAP搜索期间匹配用户的属性,它能够是uid,cn,email或其余属性。 |
ldap_scope | 搜索用户的范围,0-LDAP_SCOPE_BASE,1-LDAP_SCOPE_ONELEVEL,2-LDAP_SCOPE_SUBTREE。默认值为2。 |
self_registration | ( on或off。默认on)启用/禁用用户自助注册功能。禁用时,新用户只能由管理员用户建立,只有管理员能够在Harbor中建立新用户。 注意:当auth_mode设置为ldap_auth时,始终禁用自助注册功能,并忽略此设置。 |
token_expiration | 令牌服务建立的令牌到期时间(以分钟为单位),默认为30分钟。 |
project_creation_restriction | 用于控制用户有权建立项目的设置。默认状况下,每一个人均可以建立一个项目,设置为“adminonly”,只有管理员才能建立项目。 |
配置存储后端(可选)
默认状况下,Harbor将镜像存储在本地文件系统中。在生产环境中,能够考虑使用其余存储后端而不是本地文件系统,如S3,OpenStack Swift,Ceph等。须要更新的是storage文件中的部分common/templates/registry/config.yml。例如,若是使用Openstack Swift做为存储后端,则该部分可能以下所示:
storage: swift: username: admin password: ADMIN_PASS authurl: http://keystone_addr:35357/v3/auth tenant: admin domain: default region: regionOne container: docker_images
默认状况下,Harbor监听80(HTTP)和443(HTTPS),若是端口已经被占用,可使用自定义端口。
对于HTTP协议
一、修改 docker-compose.yml
将第一个80修改成自定义端口,例如8888:80。
proxy: image: goharbor/nginx-photon:v1.7.0 container_name: nginx restart: always cap_drop: \- ALL cap_add: \- CHOWN \- SETGID \- SETUID \- NET_BIND_SERVICE volumes: \- ./common/config/nginx:/etc/nginx:z networks: \- harbor dns_search: . ports: \- 8888:80 将80端口映射到8888 \- 8443:443 将443端口映射到8443 \- 4443:4443 depends_on: \- postgresql \- registry \- core \- portal \- log logging: driver: "syslog" options: syslog-address: "tcp://192.168.0.2:1514" tag: "proxy"
二、修改harbor.cfg,将8888端口添加到参数“hostname”
hostname = 192.168.0.2:8888
在harbor文件夹中有install.sh脚本,一旦harbor.cfg和存储后端(可选)配置完成,就能够镜像Harbor安装。请注意,在线安装须要一些时间从Docker hub下载Harbor镜像,具体根据实际网络状况。
因为Harbor已与Notary和Clair集成(用于漏洞扫描),因此存在如下4中安装,任选其一便可:
sudo ./install.sh
Harbor已与Notary和Clair集成(用于漏洞扫描)。可是,默认不安装Notary或Clair服务。若是一切正常,应该可以打开浏览器访问http://192.168.0.2:8888/ 上的管理门户(192.168.0.2:8888是harbor.cfg配置的hostname,默认管理员用户名/密码为:admin/Harbor12345)。以下图:
登陆管理门户并建立一个新项目,例如: myproject。而后,可使用docker命令登陆和推送镜像。
可使用下面命令进行验证是否搭建成功
docker login 192.168.0.2:8888
过程以下:
root@duke:/etc/docker# docker login 192.168.0.2:8888 Username (admin): 输入帐户:admin Password: 输入默认密码:Harbor12345 Login Succeeded
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
执行步骤以下:
root@duke:~# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt Generating a 4096 bit RSA private key .............................................++ .............................................++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:NanJing Locality Name (eg, city) []:NanJing Organization Name (eg, company) [Internet Widgits Pty Ltd]:rancher Organizational Unit Name (eg, section) []:info technology Common Name (e.g. server FQDN or YOUR name) []:duke Email Address []:xxxxx@126.com
若是你使用相似demo.rancher.com的FQDN域名访问,则须要设置demo.rancher.com做为CN;若是你使用IP地址访问,CN则为IP地址:
openssl req -newkey rsa:4096 -nodes -sha256 -keyout demo.rancher.com.key -out demo.rancher.com.csr
或者
openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.0.2.key -out 192.168.0.2.csr
执行步骤以下:
root@duke:~# openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.0.2.key -out 192.168.0.2.csr Generating a 4096 bit RSA private key ....................................................................++ ....................................................................++ writing new private key to '192.168.0.2.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:NanJing Locality Name (eg, city) []:NanJing Organization Name (eg, company) [Internet Widgits Pty Ltd]:RANCHER Organizational Unit Name (eg, section) []:info technology Common Name (e.g. server FQDN or YOUR name) []:192.168.0.2 Email Address []:xxxxx@126.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:附属属性修改密码,能够不填 An optional company name []:附属属性另外一个公司名称,能够不填
openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out 192.168.0.2.crt
执行步骤以下:
root@duke:~# openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out 192.168.0.2.crt
Signature ok
subject=/C=CN/ST=NanJing/L=NanJing/O=RANCHER/OU=info technology/CN=192.168.0.2/emailAddress=xxxxx@126.com
Getting CA Private Key
若是你使用IP,例如192.168.0.2来链接,则能够改成运行如下命令
echo 'subjectAltName = IP:192.168.0.2' > extfile.cnf openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.0.2.crt
执行步骤以下:
root@duke:~# echo 'subjectAltName = IP:192.168.0.2' > extfile.cnf
root@duke:~# openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.0.2.crt
Signature ok
subject=/C=CN/ST=NanJing/L=NanJing/O=RANCHER/OU=info technology/CN=192.168.0.2/emailAddress=xxxxx@126.com
Getting CA Private Key
通过上面步骤操做后,会生成ca.crt、ca.srl、ca.key、192.168.0.2.crt、192.168.0.2.key、192.168.0.2.csr、extfile.cnf这几个文件。
执行步骤以下:
root@duke:~# ls
192.168.0.2.crt 192.168.0.2.key ca.crt ca.srl docker-1.13.1.tgz kubectl shipyard var 模板 图片 下载 桌面
192.168.0.2.csr anaconda3 ca.key docker extfile.cnf mapd-docker-storage tigervncserver_1.6.80-4_amd64.deb 公共的 视频 文档 音乐
若是要启用SSL,并进行HTTPS登录,就必须配置harbor.cfg如下配置
hostname = 192.168.0.2:8443 在修改了默认端口状况下,必须配置端口,此处为8443,不配置将没法保证 docker login的正常登录 ui_url_protocol = https 要启用SSL认证,就必须配置为https customize_crt = on 要启用SSL认证,就必须配置为on ssl_cert = /data/cert/server.crt 私有证书存放地址 ssl_cert_key = /data/cert/server.key 私有密钥存放地址 secretkey_path = /data 配置目录
### 6.2.二、配置harbor的自定义CA认证 复制6.1章节生成的密钥到指定的秘钥目录 ``` cp 192.168.0.2.crt /data/cert/server.crt cp 192.168.0.2.key /data/cert/server.key ``` ## 6.三、Harbor自定义监听端口 默认状况下,Harbor监听80(HTTP)和443(HTTPS),若是端口已经被占用,可使用自定义端口。 **对于HTTPS协议** **一、修改 docker-compose.yml** 将第一个443修改成自定义端口,例如8443:443。
proxy: image: goharbor/nginx-photon:v1.7.0 container_name: nginx restart: always cap_drop: \- ALL cap_add: \- CHOWN \- SETGID \- SETUID \- NET_BIND_SERVICE volumes: \- ./common/config/nginx:/etc/nginx:z networks: \- harbor dns_search: . ports: \- 8888:80 将80端口映射到8888 \- 8443:443 将443端口映射到8443 \- 4443:4443 depends_on: \- postgresql \- registry \- core \- portal \- log logging: driver: "syslog" options: syslog-address: "tcp://192.168.0.2:1514" tag: "proxy"
二、修改harbor.cfg,将8443端口添加到参数“hostname”
hostname = 192.168.0.2:8443
在harbor文件夹中有install.sh脚本,一旦harbor.cfg和存储后端(可选)配置完成,就能够镜像Harbor安装。请注意,在线安装须要一些时间从Docker hub下载Harbor镜像,具体根据实际网络状况。
因为Harbor已与Notary和Clair集成(用于漏洞扫描),因此存在如下4中安装,任选其一便可:
sudo ./install.sh
Harbor已与Notary和Clair集成(用于漏洞扫描)。可是,默认不安装Notary或Clair服务。若是一切正常,应该可以打开浏览器访问http://192.168.0.2:8888/ 上的管理门户(192.168.0.2:8888是harbor.cfg配置的hostname,默认管理员用户名/密码为:admin/Harbor12345)。以下图:
管理门户并建立一个新项目,例如: myproject。而后,可使用docker命令登陆和推送镜像。
可使用下面命令进行验证是否搭建成功
docker login -u admin -p Harbor12345 192.168.0.2:8443
过程以下:
root@duke:/etc/docker# docker login -u admin -p Harbor12345 192.168.0.2:8443 Login Succeeded
要使用Notary服务安装Harbour,请在运行install.sh时添加参数:
sudo ./install.sh --with-notary
注意:使用notary安装,参数ui_url_protocol必须设置为“https”。
要使用Clair服务安装Harbour,请在运行install.sh时添加参数:
sudo ./install.sh --with-clair
sudo ./install.sh --with-notary --with-clair
若是在安装配置HTTPS的Harbor前,已经默认方式安装了HTTP的harbor,能够执行如下操做,前提是同版本操做。
sudo docker-compose down -v 中止并卸载harbor sudo vim harbor.cfg 从新配置harbor sudo prepare 从新生成harbor配置 sudo docker-compose up -d 从新安装启动harbor
删除Harbor的数据库和图像数据(用于干净的从新安装)
rm -r /data/database rm -r /data/registry
当Harbour与Notary或者Clair一块儿安装时,docker-compose命令须要指定一个或者两个额外的模板文件。用于管理Harbour生命周期的docker-compose命令是:
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml [ up|down|ps|stop|start ]
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml [ up|down|ps|stop|start ]
若是要在使用Notary安装Harbor时更改配置并从新部署Harbour,则应使用如下命令:
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml down -v sudo vim harbor.cfg sudo prepare --with-notary sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml up -d
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml down -v sudo vim harbor.cfg sudo prepare --with-notary --with-clair sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml up -d
当Harbor没法正常工做时,请运行如下命令以查明Harbor的全部容器是否处于UP状态:
sudo docker-compose ps
若是容器不是UP状态,检查目录容器的日志文件/var/log/harbor。例如,若是容器harbor-ui未运行,则应查看日志文件ui.log。