關於Harbor
Harbor是用於存儲和分發Docker鏡像的鏡像倉庫服務,相比Docker Registry,Harbor在安全、標識、管理等方面做了增強,更適合企業使用;
環境信息
今天要部署的Harbor版本是1.9.0,本次部署用的機器信息如下:
- 操作系統:CentOS Linux release 7.7.1908
- Docker:19.03.2
- docker-compose:1.23.2
部署Harbor
Harbor官方提供了在線和離線兩種安裝方式,考慮到企業服務器有可能無法訪問外網,因此選擇離線安裝更加實用;
- 打開Harbor的GitHub倉庫的release頁面下載離線安裝包,地址是:https://github.com/goharbor/harbor/releases ,如下圖紅框所示,我選擇了最新版的1.9.0:
- 將離線安裝包harbor-offline-installer-v1.9.0.tgz下載到電腦上,執行以下命令解壓:
tar -zxvf harbor-offline-installer-v1.9.0.tgz
解壓的結果是個名為harbor的文件夾,進入該文件夾;
- 修改配置文件harbor.yml,主要是修改以下兩個配置:
a. hostname:填寫本機的IP地址或者hostname,如果已經和域名綁定了也可以填域名;
b. harbor_admin_password:管理員初始密碼;
更多配置例如https、存儲等,請參考官方文檔按需設置; - 開始安裝,在install.sh文件所在目錄執行命令./install.sh即可安裝Harbor,部署成功的控制台信息如下:
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registryctl ... done
Creating registry ... done
Creating harbor-db ... done
Creating redis ... done
Creating harbor-portal ... done
Creating harbor-core ... done
Creating nginx ... done
Creating harbor-jobservice ... done
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://192.168.50.167.
For more details, please visit https://github.com/goharbor/harbor .
- 此時應該有九個容器正常運行:
[root@vostro ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dac02ab21a1f goharbor/harbor-jobservice:v1.9.0 "/harbor/harbor_jobs…" 3 hours ago Up 3 hours (healthy) harbor-jobservice
998fa5676a08 goharbor/nginx-photon:v1.9.0 "nginx -g 'daemon of…" 3 hours ago Up 3 hours (healthy) 0.0.0.0:80->8080/tcp nginx
bc87d9a5a7f7 goharbor/harbor-core:v1.9.0 "/harbor/harbor_core" 3 hours ago Up 3 hours (healthy) harbor-core
ce495560ef35 goharbor/harbor-db:v1.9.0 "/docker-entrypoint.…" 3 hours ago Up 3 hours (healthy) 5432/tcp harbor-db
25a13fddd607 goharbor/harbor-portal:v1.9.0 "nginx -g 'daemon of…" 3 hours ago Up 3 hours (healthy) 8080/tcp harbor-portal
b9f72d4da022 goharbor/redis-photon:v1.9.0 "redis-server /etc/r…" 3 hours ago Up 3 hours (healthy) 6379/tcp redis
3804003153ae goharbor/harbor-registryctl:v1.9.0 "/harbor/start.sh" 3 hours ago Up 3 hours (healthy) registryctl
d8d570e88874 goharbor/registry-photon:v2.7.1-patch-2819-v1.9.0 "/entrypoint.sh /etc…" 3 hours ago Up 3 hours (healthy) 5000/tcp registry
2d940d7fd271 goharbor/harbor-log:v1.9.0 "/bin/sh -c /usr/loc…" 3 hours ago Up 3 hours (healthy) 127.0.0.1:1514->10514/tcp harbor-log
- 由於Harbor的web服務使用了宿主機的80端口,所以在瀏覽器直接輸入宿主機的IP地址即可訪問Harbor的web管理頁面,賬號是admin,密碼是前面設置的harbor_admin_password的值(默認是Harbor12345):
- 登錄成功后發現空空如也,也是,目前還沒啥東西:
允許http連接
接下來我們要驗證Harbor服務是否可用,驗證方式是從另一台Linux電腦(下面稱之為A電腦)遠程推送鏡像到Harbor機器;
Harbor默認是不允許http連接的,這里可以修改設置來支持http連接,以便后續的驗證操作;
- 如果要從A電腦連接Harbor服務器,那么要對A電腦做設置,這里A電腦是Linux操作系統;
- 編輯A電腦的/etc/docker/daemon.json文件(如果不存在就新建),增加以下內容,192.168.50.167是Harbor服務器的IP地址:
{
"insecure-registries":["192.168.50.167"]
}
- 重啟使配置生效:
systemctl daemon-reload && systemctl restart docker
再次提醒:這里修改是遠程連接Harbor服務的機器的配置,而不是Harbor服務器的配置;
推送鏡像到Harbor
接下來驗證Harbor的服務,在A電腦上嘗試將本機的鏡像推送到Harbor;
- 登錄A電腦,選個本地鏡像用來測試,我這里有個名為jenkinsci/blueocean:1.19.0的本地鏡像,ID為11e2757c8bc1:
root@hedy:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinsci/blueocean 1.19.0 11e2757c8bc1 7 days ago 553MB
- 執行以下命令,將選定的本地鏡像修改名稱和TAG:
docker tag 11e2757c8bc1 192.168.50.167/library/jenkinsci/blueocean:1.19.0
上述命令中,192.168.50.167是安裝harbor的時候,harbor.yml文件中配置的hostname的值,library是harbor默認的項目名稱;
3. 執行以下命令即可從A電腦登錄Harbor:
docker login 192.168.50.167 -u admin -p Harbor12345
- 執行命令docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0
root@hedy:~# docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0
The push refers to repository [192.168.50.167/library/jenkinsci/blueocean]
2963284ab4ce: Pushing [================================================> ] 58.27MB/60.25MB
c4a4de444fad: Pushing [========> ] 47.87MB/267.6MB
850b4f512dc8: Pushed
abdaf43f94b6: Pushed
a6a27b82134d: Pushed
d6bee87a74b8: Pushed
28c6bdb5fda9: Pushed
bb25d1c7cc8a: Pushed
e2419390abaa: Pushing [========================> ] 37.29MB/77.36MB
d6982687f77e: Pushed
c9659702491d: Pushed
ed4e100c24a1: Pushing [==========================================> ] 36.71MB/43.37MB
ceaf9e1ebef5: Pushing [======> ] 12.58MB/99.29MB
9b9b7f3d56a0: Waiting
f1b5933fe4b5: Waiting
- 上傳完畢,登錄Harbor網頁,可以看到新上傳的鏡像:
至此,實戰完畢,在您搭建Harbor服務的時候希望本文能給您一些參考。