1.Harbor的介紹
1.Docker registry和Harbor的區別
Habor是由VMWare公司開源的容器鏡像倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴展(也就是二次開發,底層是Registry),從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理用戶界面,基於角色的訪問控制 ,AD/LDAP集成以及審計日志等。
容器的核心在於鏡象的概念,由於可以將應用打包成鏡像,並快速的啟動和停止,因此容器成為新的炙手可熱的基礎設施CAAS,並為敏捷和持續交付包括DevOps提供底層的支持。
總結:Harbor以Docker公司開源的registry為基礎,額外提供了如下功能:
-> 基於角色的訪問控制(Role Based Access Control)
-> 基於策略的鏡像復制(Policy based image replication)
-> 鏡像的漏洞掃描(Vulnerability Scanning)
-> AD/LDAP集成(LDAP/AD support)
-> 鏡像的刪除和空間清理(Image deletion & garbage collection)
-> 友好的管理UI(Graphical user portal)
-> 審計日志(Audit logging)
-> RESTful API (可以理解成公共的標准接口)
-> 部署簡單(Easy deployment)
Harbor的所有組件都在Dcoker中部署,所以Harbor可使用Docker Compose快速部署。需要特別注意:由於Harbor是基於Docker Registry V2版本,所以docker必須大於等於1.10.0版本,docker-compose必須要大於1.6.0版本!
2.Harbor倉庫結構
Harbor的每個組件都是以Docker容器的形式構建的,可以使用Docker Compose來進行部署。如果環境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。Harbor大概需要以下幾個容器組成:
ui(Harbor的核心服務)、
log(運行着rsyslog的容器,進行日志收集)、
mysql(由官方mysql鏡像構成的數據庫容器)、
Nginx(使用Nginx做反向代理)、
registry(官方的Docker registry)、
adminserver(Harbor的配置數據管理器)、
jobservice(Harbor的任務管理服務)、
redis(用於存儲session)。
Harbor依賴的外部組件
-> Nginx(即Proxy代理層) : Nginx前端代理,主要用於分發前端頁面ui訪問和鏡像上傳和下載流量; Harbor的registry,UI,token等服務,通過一個前置的反向代理統一接收瀏覽器、Docker客戶端的請求,並將請求轉發給后端不同的服務。
-> Registry v2: 鏡像倉庫,負責存儲鏡像文件; Docker官方鏡像倉庫, 負責儲存Docker鏡像,並處理docker push/pull命令。由於我們要對用戶進行訪問控制,即不同用戶對Docker image有不同的讀寫權限,Registry會指向一個token服務,強制用戶的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token進行解密驗證。
-> Database(MySQL或Postgresql):為core services提供數據庫服務,負責儲存用戶權限、審計日志、Docker image分組信息等數據。
Harbor自有組件
-> Core services(Admin Server): 這是Harbor的核心功能,主要提供以下服務:
-> UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image), 並對用戶進行授權。
-> webhook:為了及時獲取registry 上image狀態變化的情況, 在Registry上配置webhook,把狀態變化傳遞給UI模塊。
-> Auth服務:負責根據用戶權限給每個docker push/pull命令簽發token. Docker 客戶端向Regiøstry服務發起的請求,如果不包含token,會被重定向到這里,獲得token后再重新向Registry進行請求。
-> API: 提供Harbor RESTful API(一種統一發規范化請求接口)
-> Replication Job Service:提供多個 Harbor 實例之間的鏡像同步功能。
-> Log collector:為了幫助監控Harbor運行,負責收集其他組件的log,供日后進行分析
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把日志匯總到一起,通過淺藍色線條標識。
3.Harbor的誤區
誤區一: Harbor是負責存儲容器鏡像的 (Harbor是鏡像倉庫,那么它就應當是存儲鏡像的)
其實關於鏡像的存儲,Harbor使用的是官方的docker registry服務去完成,至於registry是用本地存儲或者s3都是可以的,Harbor的功能是在此之上提供用戶權限管理、鏡像復制等功能,提高使用的registry的效率。
誤區二:Harbor鏡像復制是存儲直接復制 (鏡像的復制,很多人以為應該是鏡像分層文件的直接拷貝)
其實Harbor鏡像復制采用了一個更加通用、高屋建瓴的做法,通過docker registry 的API去拷貝,這不是省事,這種做法屏蔽了繁瑣的底層文件操作、不僅可以利用現有docker registry功能不必重復造輪子,而且可以解決沖突和一致性的問題。
2.Harbor倉庫環境的部署
1.建議配置
Harbor倉庫部署的官方要求的最小系統配置
-> 2個cpu
-> 4g內存
-> 40g硬盤,因為是存儲鏡像的所以推薦硬盤大點。
2.環境要求和准備工作
Harbor以容器的形式進行部署, 因此可以被部署到任何支持Docker的Linux發行版, 要使用Harbor,需要安裝docker和docker-compose編排工具,並且具備如下環境:
Python2.7+ (centos7自帶的python版本就是2.7.5) Docker Engine 1.10+ Docker Compose 1.6.0+ 系統版本在Centos7.5以上 ip_forward路由轉發功能要打開
另Docker 18.09.1 及以上的版本,系統內核版本需要升級到4.4.x,原因如下
1)CentOS 7.x 系統自帶的3.10.x內核存在一些Bugs,導致運行的Docker、Kubernetes不穩定。
2)高版本的 docker(1.13 以后) 啟用了3.10 kernel實驗支持的kernel memory account功能(無法關閉),當docker節點壓力大 (如頻繁啟動和停止容器) 時會導致 cgroup memory leak;
3)Docker 18.09.1 及以上的版本,需要手動升級內核到 4.4.X 以上;
內核升級步驟如下:
[root@manager-node1 ~]# uname -r 3.10.0-957.el7.x86_64 #要在 CentOS 7 上啟用 ELRepo 倉庫,注意這里最好DNS用谷歌的。不然可能會報網絡問題。 [root@manager-node1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm #安裝完成后檢查 /boot/grub2/grub.cfg 中對應內核 menuentry 中是否包含 initrd16 配置,如果沒有,再安裝一次! [root@manager-node1 ~]# cat /boot/grub2/grub.cfg |grep initrd16 initrd16 /initramfs-3.10.0-1160.11.1.el7.x86_64.img initrd16 /initramfs-3.10.0-957.el7.x86_64.img initrd16 /initramfs-0-rescue-187831681d0c49d3b33d1629cd34429f.img #這里需要注意的是,在 ELRepo 中有兩個內核選項,一個是 kernel-lt(長期支持版本),一個是 kernel-ml(主線最新版本),采用長期支持版本(kernel-lt),更穩定一些 [root@manager-node1 ~]# yum --enablerepo=elrepo-kernel install -y kernel-lt #設置開機從新內核啟動 [root@manager-node1 ~]# grub2-set-default 0 #重啟后檢查。 [root@manager-node1 ~]# init 6 [root@manager-node1 ~]# uname -r 4.4.248-1.el7.elrepo.x86_64
docker和docker-compose的安裝這里就不演示了,可以參考我其它文章。
環境的檢查和補充
[root@manager-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@manager-node1 ~]# uname -r 4.4.248-1.el7.elrepo.x86_64 #開啟路由轉發
[root@manager-node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@manager-node1 ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #關閉防火牆,並檢查
[root@manager-node1 ~]# systemctl stop firewalld && systemctl disable firewalld && firewall-cmd --state not running [root@manager-node1 ~]# vim /etc/sysconfig/selinux SELINUX=disabled [root@manager-node1 ~]# getenforce Disabled #檢查python版本
[root@manager-node1 ~]# python --version Python 2.7.5
#檢查docker版本 [root@manager-node1 ~]# docker --version Docker version 20.10.1, build 831ebea
#檢查docker-compose版本
[root@manager-node1 ~]# docker-compose --version
docker-compose version 1.27.4, build 40524192
3.HTTPS證書自簽
如果線上環境有已購買好的HTTPS證書可以直接拿過來用,如果沒有,就在Harbor本機進行HTTPS證書自簽。這里Harbor本機ip地址是192.168.195.166
#生成CA證書私鑰
[root@manager-node1 ~]# openssl genrsa -out ca.key 4096 #生成CA證書
[root@manager-node1 ~]# openssl req -x509 -new -nodes -sha512 -days 3650 \ > -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166" \ > -key ca.key \ > -out ca.crt
生成服務器證書
1.生成私鑰
[root@manager-node1 ~]# openssl genrsa -out 192.168.195.166.key 4096 2.生成證書簽名請求(CSR)
[root@manager-node1 ~]# openssl req -sha512 -new \ > -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166" \ > -key 192.168.195.166.key \ > -out 192.168.195.166.csr 3.生成一個x509 v3擴展文件(兩種方式根據情況二選一) #################################################################################### 第一種方式:域名 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=172.16.60.238 DNS.2=yourdomain DNS.3=hostname EOF #################################################################################### 第二種方式:IP cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = IP:172.16.60.238 EOF #################################################################################### #我們這里選擇第二種的IP方式 [root@manager-node1 ~]# openssl req -sha512 -new \ > -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166" \ > -key 192.168.195.166.key \ > -out 192.168.195.166.csr [root@manager-node1 ~]# cat > v3.ext <<-EOF > authorityKeyIdentifier=keyid,issuer > basicConstraints=CA:FALSE > keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment > extendedKeyUsage = serverAuth > subjectAltName = IP:192.168.195.166 > EOF 4.使用該v3.ext文件為您的Harbor主機生成證書
[root@manager-node1 ~]# openssl x509 -req -sha512 -days 3650 \ > -extfile v3.ext \ > -CA ca.crt -CAkey ca.key -CAcreateserial \ > -in 192.168.195.166.csr \ > -out 192.168.195.166.crt Signature ok subject=/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166 Getting CA Private Key
4.提供證書給Harbor和Docker
1.將服務器證書和密鑰復制到Harbor主機上的certficates文件夾中,
根據自己實際環境需求創建Harbor的certficates文件夾
[root@manager-node1 ~]# mkdir -p /data/cert/ [root@manager-node1 ~]# cp 192.168.195.166.crt /data/cert/ [root@manager-node1 ~]# cp 192.168.195.166.key /data/cert/ 2.轉換 192.168.195.166.crt 為192.168.195.166.cert,供Docker使用。
[root@manager-node1 ~]# openssl x509 -inform PEM -in 192.168.195.166.crt -out 192.168.195.166.cert 3.將服務器證書,密鑰和CA文件復制到Harbor主機上的Docker certificate文件夾中。
記住必須首先創建適當的文件夾
[root@manager-node1 ~]# mkdir -p /etc/docker/certs.d/192.168.195.166/ [root@manager-node1 ~]# cp 192.168.195.166.cert /etc/docker/certs.d/192.168.195.166/ [root@manager-node1 ~]# cp 192.168.195.166.key /etc/docker/certs.d/192.168.195.166/ [root@manager-node1 ~]# cp ca.crt /etc/docker/certs.d/192.168.195.166/ 4.重啟Docker
[root@manager-node1 ~]# systemctl restart docker [root@manager-node1 ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2020-12-28 03:52:18 CST; 6s ago Docs: https://docs.docker.com Main PID: 10538 (dockerd) Tasks: 12 Memory: 46.6M CGroup: /system.slice/docker.service └─10538 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 5.將名為"ca.crt"的CA證書下載到本地電腦,然后安裝證書。 這樣就可以在本地電腦的瀏覽器里正常訪問https地址的Harbor了(證書可被信任)
5.安裝Harbor
到 Harbor的GitHub倉庫的Release頁面 , 下載最新的安裝包,安裝包分為在線版,和離線版本,兩個版本的區別就是離線版把需要的依賴都提前打到一個包里去了,在線版本就是在安裝的時候去拉依賴。安裝前的配置都是一樣的。下面演示的是在線版。
#這里下載Harbor v2.1.2版本的在線安裝包
[root@manager-node1 ~]# cd /usr/local/src/ [root@manager-node1 src]# wget https://github.com/goharbor/harbor/releases/download/v2.1.2/harbor-online-installer-v2.1.2.tgz #上面下載的是在線版安裝包,很小,如果想要下載離線版本的,地址如下。
https://github.com/goharbor/harbor/releases/download/v2.1.2/harbor-offline-installer-v2.1.2.tgz
[root@manager-node1 src]# tar -zvxf harbor-online-installer-v2.1.2.tgz [root@manager-node1 src]# mv harbor /opt/ #修改harbor安裝的配置文件
[root@manager-node1 src]# cd /opt/harbor/ [root@manager-node1 harbor]# cp harbor.yml.tmpl harbor.yml [root@manager-node1 harbor]# vim harbor.yml
.........
........
hostname
: 192.168.195.166
//需要寫IP地址或者域名
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate:
/data/cert/192.168.195.166
.crt
private_key:
/data/cert/192.168.195.166
.key
........
........
harbor_admin_password: Harbor@123456 #harbor初始管理員密碼為Harbor12345, 這里最好修改成自己的密碼,默認密碼至少8位,最好是大小寫、數字和特殊字符。
........
........
data_volume:
/data ##持久化數據目錄
#運行
install
.sh, 注意運行時加上--with-clair 選項,啟動clair鏡像掃描功能
[root@manager-node1 harbor]# ./install.sh --with-clair
✔ ----Harbor has been installed and started successfully.----
#出現上面的信息,說明Harbor已經安裝完成了。
查看harbor啟動情況。
docker-compose 命令必須要在harbor安裝目錄
(這里就是/opt/harbor
)路徑下才能執行。
[root@manager-node1 harbor]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------
clair ./docker-entrypoint.sh Up (healthy)
clair-adapter /home/clair-adapter/entryp ... Up (healthy)
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp,
0.0.0.0:443->8443/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
#查看harbor鏡像
[root@manager-node1 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/redis-photon v2.1.2 ab361cc80013 2 weeks ago 68.8MB
goharbor/clair-adapter-photon v2.1.2 b43551e703c2 2 weeks ago 58MB
goharbor/clair-photon v2.1.2 0e9f86b78780 2 weeks ago 168MB
goharbor/harbor-registryctl v2.1.2 da26ae6a8d51 2 weeks ago 132MB
goharbor/registry-photon v2.1.2 417d60a20a94 2 weeks ago 80.1MB
goharbor/nginx-photon v2.1.2 f9ea32db995f 2 weeks ago 40.1MB
goharbor/harbor-log v2.1.2 7514c453345e 2 weeks ago 106MB
goharbor/harbor-jobservice v2.1.2 123382c0d590 2 weeks ago 169MB
goharbor/harbor-core v2.1.2 46211d9a0f44 2 weeks ago 150MB
goharbor/harbor-portal v2.1.2 6eedd3daad4c 2 weeks ago 49.5MB
goharbor/harbor-db v2.1.2 f0c14faef5d5 2 weeks ago 172MB
goharbor/prepare v2.1.2 cc5f5219b08b 2 weeks ago 161MB#確保harbpr啟動后的80和443端口都起來了
[root@manager-node1 harbor]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 15359 root 4u IPv6 80740 0t0 TCP *:http (LISTEN)
[root@manager-node1 harbor]# lsof -i:443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 15345 root 4u IPv6 80711 0t0 TCP *:https (LISTEN)
3.Harbor的使用
1.web界面的介紹和使用
到這里就可以訪問harbor了,訪問地址為:https:
//192.168.195.166
用戶名為admin,密碼為配置文件中定義的
"Harbor@123456"
harbor的用法概念和我們在Gitlab上的用法概念差不多。
首先在Harbor web界面里最好創建一個自己需要的"項目" (或者使用默認的"library"項目),項目公開和私有:
- Public: 任何人對於公開項目都有讀權限,這種方式對於你想把一些倉庫分享給其他人的時候,是非常方便的.
- Private: 私有項目只能被有特定用戶權限的人去訪問。這種方式對於內部團隊來說共享也是比較方便的
比如創建一個私有項目"test-Harbor",點擊進去可以看到推送鏡像的信息提示
2.Harbor鏡像的推送和下載
這里我們就可以在Harbor服務器的終端命令行里到Harbor倉庫進行鏡像的推送和拉取操作了:
harbor本地服務器登錄
在進行harbor鏡像推送和拉取操作前,需要事先login登錄到harbor倉庫里,這樣才有harbor鏡像的推送和拉取的權限!!
#因為docker1.3.2版本開始默認docker registry使用的是https,而Harbor默認設置的是http方式而不是https,所以當執行用docker login、pull、push等
命令操作非https的docker regsitry的時就會報如下錯誤
[root@centos-test-no ~]# docker login 172.31.46.28 Username: test1 Password: Error response from daemon: Get https://172.31.46.28/v2/: x509: certificate signed by unknown authority
#為了解決上面問題,在
/etc/docker/daemon
.json文件里添加
"insecure-registries"
配置,(如果還不行,可以嘗試將下面添加的地址由
"172.31.46.28"
改為
"http://172.31.46.28"
),
注意daemon.json配置文件兩行之間有一個
","
逗號隔開
[root@centos-test-no ~]# vim /etc/docker/daemon.json [root@centos-test-no ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://9l7fbd59.mirror.aliyuncs.com"], "insecure-registries": ["172.31.46.28"] }
#修改完之后,重啟docker,注意如果harbor本地服務器登錄遇到上面問題的話,還需要重啟harbor服務 [root@centos-test-no ~]# systemctl restart docker #最后驗證測試登錄 [root@centos-test-no ~]# docker login 172.31.46.28 Username: test1 Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
#登錄的賬號信息都保存到
/root/
.docker
/config
.json文件里了
[root@harbor-node harbor]
# cat /root/.docker/config.json
{
"auths"
: {
"172.16.60.213"
: {
"auth"
:
"YWRtaW46a2V2aW5AQk8xOTg3"
}
},
"HttpHeaders"
: {
"User-Agent"
:
"Docker-Client/18.09.6 (linux)"
}
#只要
/root/
.docker
/config
.json里的信息不刪除,后續再次登錄的時候,就不用輸入用戶名和密碼了
[root@harbor-node ~]
# docker login 172.16.60.213
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted
in
/root/
.docker
/config
.json.
Configure a credential helper to remove this warning. See
https:
//docs
.docker.com
/engine/reference/commandline/login/
#credentials-store
Login Succeeded
鏡像的推送
#查看本機有哪些鏡像
[root@centos-test-no ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ae2feff98a0c 2 weeks ago 133MB centos latest 300e315adb2f 3 weeks ago 209MB #在本機中標記鏡像,這里我把本機的nginx鏡像標記為nginx:test。准備上傳到Harbor
[root@centos-test-no ~]# docker tag nginx:latest 172.31.46.28/test-harbor/nginx:test #推送標記好鏡像到當前Harbor上。
[root@centos-test-no ~]# docker push 172.31.46.28/test-harbor/nginx:test The push refers to repository [172.31.46.28/test-harbor/nginx] 4eaf0ea085df: Pushed 2c7498eef94a: Pushed 7d2b207c2679: Pushed 5c4e5adc71a8: Pushed 87c8a1d8f54f: Pushed test: digest: sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 size: 1362
#這個時候回頭看,發現本地鏡像庫中多了一個鏡像,這個鏡像是為了推送到harbor做的標簽鏡像,可以選擇刪除。
[root@centos-test-no ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.31.46.28/test-harbor/nginx test ae2feff98a0c 2 weeks ago 133MB
nginx latest ae2feff98a0c 2 weeks ago 133MB
centos latest 300e315adb2f 3 weeks ago 209MB
鏡像的下載
鏡像的下載和鏡像的上傳一樣,都要先進行驗證登錄。這里我就不做過多演示了,直接來看怎么從harbor進行鏡像的下載。
[root@manager-node2 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 3 weeks ago 209MB [root@manager-node2 ~]# docker pull 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71: Pulling from test-harbor/nginx 6ec7b7d162b2: Pull complete cb420a90068e: Pull complete 2766c0bf2b07: Pull complete e05167b6a99d: Pull complete 70ac9d795e79: Pull complete Digest: sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 Status: Downloaded newer image for 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 [root@manager-node2 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.195.166/test-harbor/nginx <none> ae2feff98a0c 2 weeks ago 133MB centos latest 300e315adb2f 3 weeks ago 209MB
3.Harbor的啟停以及配置生效
#harbor服務搭建成功后,默認會在安裝目錄下生成docker-compose.yml文件,通過這個文件harbor可以通過docker-compose進行服務的啟停 [root@manager-node1 harbor]# docker-compose start [root@manager-node1 harbor]# docker-compose stop #如果需要修改harbor的一些配置,最好配合上面的啟停中間加上下面的命令讓配置生效 [root@manager-node1 harbor]# ./prepare
4.Harbor的高可用