1. 程式人生 > >離線手動部署docker鏡像倉庫——harbor倉庫(HTTPS)

離線手動部署docker鏡像倉庫——harbor倉庫(HTTPS)

可能 download arc create .gz 51cto 端口號 sharp 下載安裝

實驗環境:

harbor服務器系統:CentOS Linux release 7.5.1804 (Core)
harbor服務器IP:10.1.12.114
harbor版本:v1.5.0
docker版本:17.05.0-ce
另外為了測試pull鏡像,使用了另一臺test機器:10.200.22.8

GitHub地址:https://github.com/goharbor/harbor

部署過程:

1、下載安裝包

下載地址:http://harbor.orientsoft.cn/

cd /data && wget http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.5.0.tgz

2、上傳並解壓安裝包

將下載下來的安裝包解壓到服務器的/usr/local目錄

[root@devopsdb1 soft]# tar -xzvf harbor-offline-installer-v1.5.0.tgz -C /usr/local/
[root@devopsdb1 local]# cd /usr/local/harbor/ [root@devopsdb1 harbor]# ll total 854960 drwxr-xr-x 3 root root 23 Feb 26 13:01 common -rw-r--r-- 1 root root 1185 May 2 2018 docker-compose.clair.yml -rw-r--r-- 1 root root 1725 May 2 2018 docker-compose.notary.yml -rw-r--r-- 1 root root 3596 May 2 2018 docker-compose.yml drwxr-xr-x 3 root root 156 May 2 2018 ha -rw-r--r-- 1 root root 6687 May 2 2018 harbor.cfg -rw-r--r-- 1 root root 875401338 May 2 2018 harbor.v1.5.0.tar.gz -rwxr-xr-x 1 root root 5773 May 2 2018 install.sh -rw-r--r-- 1 root root 10771 May 2 2018 LICENSE -rw-r--r-- 1 root root 482 May 2 2018 NOTICE -rwxr-xr-x 1 root root 27379 May 2 2018 prepare

3、配置harbor和docker修改配置(重點)

3.1 編輯/usr/local/habor/harbor.cfg,主要修改兩個地方:

80(HTTP) and 443(HTTPS)

技術分享圖片

3.2 SSL證書配置

官網配置說明:

https://github.com/vmware/harbor/blob/master/docs/configure_https.md

#簽發根證書
[root@devopsdb1 harbor]# mkdir -p /data/cert && cd /data/cert       #創建證書存放目錄
[root@devopsdb1 harbor]# openssl genrsa -out ca.key 2048         #生成根證書私鑰(無加密)
[root@devopsdb1 harbor]# openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj "/CN=Harbor-ca" #創建自己的CA證書(不使用第三方權威機構的CA來認證,自己充當CA的角色)
  req     產生證書簽發申請命令
  -x509   簽發X.509格式證書命令。X.509是最通用的一種簽名證書格式。
  -new    生成證書請求-key     指定私鑰文件-nodes   表示私鑰不加密
  -out    輸出-subj    指定用戶信息 -days    有效期
[root@devopsdb1 harbor]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr #生成服務器端私鑰和CSR簽名請求

#簽發服務器證書
[root@devopsdb1 harbor]# echo subjectAltName = IP:10.1.12.114 > extfile.cnf [root@devopsdb1 harbor]# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crt   x509 簽發X.509格式證書命令。    -req 表示證書輸入請求。 -days 表示有效天數 -extensions 表示按OpenSSL配置文件v3_req項添加擴展。 -CA 表示CA證書,這裏為ca.crt -CAkey 表示CA證書密鑰,這裏為ca.key -CAcreateserial表示創建CA證書序列號 -extfile    指定文件 #設置docker證書 # 如果如下目錄不存在,請創建,如果有域名請按此格式依次創建 [root@devopsdb1 cert]# mkdir -p /etc/docker/certs.d/10.1.12.114 # 如果端口為443,則不需要指定。如果為自定義端口,請指定端口 # /etc/docker/certs.d/yourdomain.com:port # 將ca根證書依次復制到上述創建的目錄中 [root@devopsdb1 cert]# cp /data/cert/ca.crt /etc/docker/certs.d/10.1.12.114/ [root@devopsdb1 cert]# cp server.crt server.key /etc/pki/ca-trust/source/anchors/
[root@devopsdb1 cert]# mkdir -p /etc/ssl/harbor/
[root@devopsdb1 cert]# cp /data/cert/server.crt /etc/ssl/harbor/
[root@devopsdb1 cert]# cp /data/cert/server.key /etc/ssl/harbor/

  

3.3 重啟docker服務:

[root@devopsdb1 cert]# update-ca-trust enable
[root@devopsdb1 cert]# update-ca-trust extract
[root@devopsdb1 cert]# systemctl daemon-reload    #踩過的坑證明,這一步最好不要忘了,不然即使重啟了docker,配置文件有可能也會不生效,導致各種奇怪的問題
[root@devopsdb1 cert]# systemctl restart docker

4、安裝docker-compose

# curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

或者
yum -y install docker-compose

5、 執行install.sh腳本,安裝harbor倉庫

[root@devopsdb1 harbor]# docker-compose up -d

離線安裝docker-compose和執行install.sh的註意事項都在《離線手動部署docker鏡像倉庫——harbor倉庫(一)》裏面說過,就不贅述了。

6、檢查部署是否OK

6.1 檢查容器啟動狀況,已經全部OK,默認使用443端口:

技術分享圖片

6.2 界面訪問(加上1180端口哦):

技術分享圖片

7、測試使用

7.1 登錄後創建一個data項目:

技術分享圖片

7.2 創建測試鏡像並推送到倉庫(這裏也要帶上端口號喲):

[root@devopsdb1 cert]# docker tag 10.1.12.114:5000/eiki/archer:v2.0 10.1.12.114/data/eiki/archer:v2.0
[root@devopsdb1 cert]# docker push 10.1.12.114/data/eiki/archer:v2.0

7.3 查看倉庫,鏡像已經存在

技術分享圖片

7.4 復制pull命令,在test機器上測試pull命令:

[root@www anchors]# docker pull 10.1.12.114/data/eiki/archer:v2.0
The push refers to a repository [10.1.12.114/data/eiki/archer] 
af0b15c8625b: Pushed
v2.0: digest: sha256:aea2c7bc314d5015556c3725dbcb66c739d9d7acc6df0681368d1b9aae3c9cd9 size: 524

  

=============下面的操作在test機器上進行=============

1、傳遞CA認證信息到test庫:

cd /data/cert/ && scp ca.crt 10.200.22.8:/etc/pki/ca-trust/source/anchors/
cd /data/cert/ && scp server.crt 10.200.22.8:/etc/pki/ca-trust/source/anchors/

2、重啟test的docker服務:

update-ca-trust enable
update-ca-trust extract
systemctl restart docker

3.、登錄:

[root@www anchors]# docker login 10.1.12.114
Username (admin): admin
Password: 
Login Succeeded

4、在test機器上測試pull鏡像:

 
[root@www anchors]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
eiki/archer                   latest              de9c6958d8e4        4 days ago          1.8GB
centos                        7                   1e1148e4cc2c        2 months ago        202MB
[root@www anchors]# docker pull 10.1.12.114/data/hello-world:v12
v12: Pulling from data/hello-world
3f9a4cb51977: Pull complete 
Digest: sha256:aea2c7bc314d5015556c3725dbcb66c739d9d7acc6df0681368d1b9aae3c9cd9
Status: Downloaded newer image for 10.1.12.114/data/hello-world:v12
[root@www anchors]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
eiki/archer                    latest              de9c6958d8e4        4 days ago          1.8GB
10.1.12.114/data/hello-world   v12                 fce289e99eb9        8 weeks ago         1.84kB
centos                         7                   1e1148e4cc2c        2 months ago        202MB
[root@www anchors]# 

至此,harbor倉庫就部署好了。

參考來源:

https://blog.51cto.com/10950710/2152638

https://blog.51cto.com/10950710/2153086

https://blog.51cto.com/10950710/2301257

離線手動部署docker鏡像倉庫——harbor倉庫(HTTPS)