CentOS部署Harbor鏡像倉庫

關於Harbor

Harbor是用於存儲和分發Docker鏡像的鏡像倉庫服務,相比Docker Registry,Harbor在安全、標識、管理等方面作了加強,更適合企業使用;nginx

  1. 官方網站:https://goharbor.io/
  2. 官方開源:https://github.com/goharbor/harbor

環境信息

今天要部署的Harbor版本是<font color="blue">1.9.0</font>,本次部署用的機器信息以下:git

  1. 操做系統:CentOS Linux release 7.7.1908
  2. Docker:19.03.2
  3. docker-compose:1.23.2

部署Harbor

Harbor官方提供了在線和離線兩種安裝方式,考慮到企業服務器有可能沒法訪問外網,所以選擇離線安裝更加實用;github

  1. 打開Harbor的GitHub倉庫的release頁面下載離線安裝包,地址是:https://github.com/goharbor/harbor/releases ,以下圖紅框所示,我選擇了最新版的1.9.0: 在這裏插入圖片描述
  2. 將離線安裝包<font color="blue">harbor-offline-installer-v1.9.0.tgz</font>下載到電腦上,執行如下命令解壓:
tar -zxvf harbor-offline-installer-v1.9.0.tgz

解壓的結果是個名爲<font color="blue">harbor</font>的文件夾,進入該文件夾;web

  1. 修改配置文件<font color="blue">harbor.yml</font>,主要是修改如下兩個配置: a. hostname:填寫本機的IP地址或者hostname,若是已經和域名綁定了也能夠填域名; b. harbor_admin_password:管理員初始密碼; 更多配置例如https、存儲等,請參考官方文檔按需設置;
  2. 開始安裝,在install.sh文件所在目錄執行命令<font color="blue">./install.sh</font>便可安裝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 .
  1. 此時應該有九個容器正常運行:
[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
  1. 因爲Harbor的web服務使用了宿主機的80端口,因此在瀏覽器直接輸入宿主機的IP地址便可訪問Harbor的web管理頁面,帳號是<font color="blue">admin</font>,密碼是前面設置的<font color="blue">harbor_admin_password</font>的值(默認是Harbor12345): 在這裏插入圖片描述
  2. 登陸成功後發現空空如也,也是,目前還沒啥東西: 在這裏插入圖片描述

容許http鏈接

接下來咱們要驗證Harbor服務是否可用,驗證方式是從另外一臺Linux電腦(下面稱之爲A電腦)遠程推送鏡像到Harbor機器; Harbor默認是不容許http鏈接的,這裏能夠修改設置來支持http鏈接,以便後續的驗證操做;redis

  1. 若是要從A電腦鏈接Harbor服務器,那麼要對A電腦作設置,這裏A電腦是Linux操做系統;
  2. 編輯A電腦的<font color="blue">/etc/docker/daemon.json</font>文件(若是不存在就新建),增長如下內容,192.168.50.167是Harbor服務器的IP地址:
{
  "insecure-registries":["192.168.50.167"]
}
  1. 重啓使配置生效:
systemctl daemon-reload  && systemctl restart docker

再次提醒:<font color="red">這裏修改是遠程鏈接Harbor服務的機器的配置,而不是Harbor服務器的配置;</font>docker

推送鏡像到Harbor

接下來驗證Harbor的服務,在A電腦上嘗試將本機的鏡像推送到Harbor;shell

  1. 登陸A電腦,選個本地鏡像用來測試,我這裏有個名爲<font color="blue">jenkinsci/blueocean:1.19.0</font>的本地鏡像,ID爲<font color="blue">11e2757c8bc1</font>:
root@hedy:~# docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
jenkinsci/blueocean                 1.19.0              11e2757c8bc1        7 days ago          553MB
  1. 執行如下命令,將選定的本地鏡像修更名稱和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:json

docker login 192.168.50.167 -u admin -p Harbor12345
  1. 執行命令<font color="blue">docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0</font>
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
  1. 上傳完畢,登陸Harbor網頁,能夠看到新上傳的鏡像: 在這裏插入圖片描述 至此,實戰完畢,在您搭建Harbor服務的時候但願本文能給您一些參考。
相關文章
相關標籤/搜索