CentOS部署Harbor鏡像倉庫


關於Harbor

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

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

環境信息

今天要部署的Harbor版本是1.9.0,本次部署用的機器信息如下:

  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. 將離線安裝包harbor-offline-installer-v1.9.0.tgz下載到電腦上,執行以下命令解壓:
tar -zxvf harbor-offline-installer-v1.9.0.tgz

解壓的結果是個名為harbor的文件夾,進入該文件夾;

  1. 修改配置文件harbor.yml,主要是修改以下兩個配置:
    a. hostname:填寫本機的IP地址或者hostname,如果已經和域名綁定了也可以填域名;
    b. harbor_admin_password:管理員初始密碼;
    更多配置例如https、存儲等,請參考官方文檔按需設置;
  2. 開始安裝,在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 .
  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管理頁面,賬號是admin,密碼是前面設置的harbor_admin_password的值(默認是Harbor12345):
    在這里插入圖片描述
  2. 登錄成功后發現空空如也,也是,目前還沒啥東西:
    在這里插入圖片描述

允許http連接

接下來我們要驗證Harbor服務是否可用,驗證方式是從另一台Linux電腦(下面稱之為A電腦)遠程推送鏡像到Harbor機器;
Harbor默認是不允許http連接的,這里可以修改設置來支持http連接,以便后續的驗證操作;

  1. 如果要從A電腦連接Harbor服務器,那么要對A電腦做設置,這里A電腦是Linux操作系統;
  2. 編輯A電腦的/etc/docker/daemon.json文件(如果不存在就新建),增加以下內容,192.168.50.167是Harbor服務器的IP地址:
{
  "insecure-registries":["192.168.50.167"]
}
  1. 重啟使配置生效:
systemctl daemon-reload  && systemctl restart docker

再次提醒:這里修改是遠程連接Harbor服務的機器的配置,而不是Harbor服務器的配置;

推送鏡像到Harbor

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

  1. 登錄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
  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. 執行命令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
  1. 上傳完畢,登錄Harbor網頁,可以看到新上傳的鏡像:
    在這里插入圖片描述
    至此,實戰完畢,在您搭建Harbor服務的時候希望本文能給您一些參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM