1. 程式人生 > >CentOS部署Harbor映象倉庫

CentOS部署Harbor映象倉庫

關於Harbor

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

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

環境資訊

今天要部署的Harbor版本是<font color="blue">1.9.0</font>,本次部署用的機器資訊如下:

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

部署Harbor

Harbor官方提供了線上和離線兩種安裝方式,考慮到企業伺服器有可能無法訪問外網,因此選擇離線安裝更加實用;

  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>的資料夾,進入該資料夾;

  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連線,以便後續的驗證操作;

  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>

推送映象到Harbor

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

  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:

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服務的時候希望本文能給您