總結—Harbor倉庫部署和使用問題集錦

前言

離線手動部署docker鏡像倉庫——harbor倉庫(一) 離線手動部署docker鏡像倉庫——harbor倉庫(二)的實驗中,遇到一些harbor倉庫部署的問題,在此作個小結。
實驗環境:
harbor服務器系統:CentOS Linux release 7.4.1708 (Core)
harbor服務器IP:10.0.0.101(test101)
harbor版本:v1.5.0
docker版本:1.13.1
使用了另外一臺機器作pull和push鏡像測試:10.0.0.102(test102)nginx

問題集錦

一、docker配置文件沒生效,引發的push鏡像失敗,報錯10.0.0.101:443: getsockopt: connection refused

問題描述:

在test101機器剛剛部署好harbor的時候,push鏡像失敗了,報「Get https://10.0.0.101/v1/_ping: dial tcp 10.0.0.101:443: getsockopt: connection refused」web

[root@test101 nginx]# docker push 10.0.0.101/test/bigdatacenter:latest
The push refers to a repository [10.0.0.101/test/bigdatacenter]
Get https://10.0.0.101/v1/_ping: dial tcp 10.0.0.101:443: getsockopt: connection refused
[root@test101 nginx]#

緣由分析:

是由於配置文件裏面配置的--insecure-registry=10.0.0.101這一行配置沒有生效(修改了配置以後,有重啓docker,可是這行內容也沒有加載成功):
總結—Harbor倉庫部署和使用問題集錦docker

解決方法:

再次從新啓動了docker服務,使之從新加載配置文件json

[root@test101 harbor]# systemctl daemon-reload     #重啓docker以前,先執行了這個步驟,很重要
[root@test101harbor]# systemctl restart docker

而後測試登陸harbor倉庫,就OK了:瀏覽器

[root@test101 harbor]# docker login 10.0.0.101
Username: admin
Password: 
Login Succeeded

再push鏡像就成功了:服務器

[root@test101 harbor]# docker push 10.0.0.101/test/bigdatacenter:latest
The push refers to a repository [10.0.0.101/test/bigdatacenter]
df9d7f53cb5b: Pushed 
ab0926f7eb13: Pushed 
24a30430d761: Pushed 
20dd87a4c2ab: Layer already exists 
78075328e0da: Layer already exists 
9f8566ee5135: Layer already exists 
latest: digest: sha256:07c467b4f8c6cfa306484bd060721fb621ddb1fd43f528ef5a0df1157d8bd853 size: 1573
[root@test101 harbor]#

二、端口問題引發的pull鏡像報錯Get https://10.0.0.101/v1/_ping: dial tcp 10.0.0.101:443: getsockopt: connection refused

問題描述:

把harbor端口默認的80端口修改成1180,而後打了個測試鏡像上去,可是在test102機器pull鏡像的時候失敗了,報錯以下:tcp

[root@test102 ~]# docker pull 10.0.0.101/test/bigdatacenter:latest
Trying to pull repository 10.0.0.101/test/bigdatacenter ... 
Get https://10.0.0.101/v1/_ping: dial tcp 10.0.0.101:443: getsockopt: connection refused

解決辦法:

1)想起來test102機器上的docker的配置文件沒有修改,因而在 /etc/sysconfig/docker 加上了「--insecure-registry=10.0.0.101:1180」:
總結—Harbor倉庫部署和使用問題集錦
而後重啓了docker服務:ide

[root@test102 ~]# systemctl restart docker
[root@test102 ~]#

再從新pull鏡像,發現報錯不同了:測試

[root@test102 ~]# docker pull 10.0.0.101/test/bigdatacenter:latest
Trying to pull repository 10.0.0.101/test/bigdatacenter ... 
Pulling repository 10.0.0.101/test/bigdatacenter
Error while pulling image: Get http://10.0.0.101/v1/repositories/test/bigdatacenter/images: dial tcp 10.0.0.101:80: getsockopt: connection refused

2)報錯dial tcp 10.0.0.101:80: getsockopt: connection refused,是由於鏡像名稱裏面沒有加上1180端口,就默認去80端口找鏡像了,因而在命令裏面加上了1180端口:ui

[root@test102 ~]# docker pull 10.0.0.101:1180/test/bigdatacenter:latest
Trying to pull repository 10.0.0.101:1180/test/bigdatacenter ... 
Get https://10.0.0.101:1180/v1/_ping: http: server gave HTTP response to HTTPS client   #關於這個報錯,網上有不少文章說是關於docker和harbor之間的交互存在一個http和https之間的問題,建議改/etc/docker/daemon.json 。可是按照網上的方法試了,改了/etc/docker/daemon.json 以後,docker服務起不來,無法解決。最後仍是嘗試使用systemctl daemon-reload+systemctl restart docker兩條命令解決了問題
[root@test102 ~]#

3)加上1180端口以後,報錯不同了,因而試着像上一個問題同樣,嘗試執行systemctl daemon-reload命令。從新載入 systemd,掃描新的或有變更的單元,而後再重啓docker:

[root@test102 ~]# systemctl daemon-reload
[root@test102 ~]# systemctl restart docker

再pull鏡像,發現就成功了!

[root@test102 ~]# docker pull 10.0.0.101:1180/test/bigdatacenter:latest
Trying to pull repository 10.0.0.101:1180/test/bigdatacenter ... 
latest: Pulling from 10.0.0.101:1180/test/bigdatacenter
53478ce18e19: Pull complete 
d1c225ed7c34: Pull complete 
c6724ba0c09a: Pull complete 
de3b8705ee9f: Pull complete 
c091a284f068: Pull complete 
010503dbdd2d: Pull complete 
Digest: sha256:ce823873379c519a583756783923dd160473a60fcf78dfd869e8b33f5198f237
Status: Downloaded newer image for 10.0.0.101:1180/test/bigdatacenter:latest
[root@test102 ~]#

注意,問題1和2說明,修改了docker的配置文件 /etc/sysconfig/docker以後,重啓docker服務,文件不必定生效了,若是發現沒生效,別忘了「systemctl daemon-reload」這條命令!

三、push鏡像失敗,報denied: requested access to the resource is denied

問題描述:

部署好harbor倉庫的時候,push鏡像失敗了,報denied: requested access to the resource is denied

[root@test101 harbor]# docker push 10.0.0.101:1180/test/bigdatacenter:latest
The push refers to a repository [10.0.0.101:1180/test/bigdatacenter]
d7393e4babfa: Preparing 
d8db36d925b6: Preparing 
93fc2863a9fb: Preparing 
20dd87a4c2ab: Preparing 
78075328e0da: Preparing 
9f8566ee5135: Waiting 
denied: requested access to the resource is denied

解決辦法:

遇到這種狀況,登陸一下harbor倉庫,登陸成功,就OK了。
關於緣由和解決方法,在網上查了,說法不一,也有不少其餘的方法,可是沒有試過,就試着登陸了一下,而後問題就解決了,部署過程當中遇到好幾回這個問題,都是這樣解決的。當換了用戶名/密碼/端口/域名什麼的,在push鏡像的時候就可能會出現這個問題。

[root@test101 harbor]# docker login 10.0.0.101:1180      #登陸一下就行了
Username: admin
Password: 
Login Succeeded

而後再從新push鏡像,就成功了

[root@test101 harbor]# docker push 10.0.0.101:1180/test/bigdatacenter:latest
The push refers to a repository [10.0.0.101:1180/test/bigdatacenter]
d7393e4babfa: Pushed 
d8db36d925b6: Pushed 
93fc2863a9fb: Pushed 
20dd87a4c2ab: Pushed 
78075328e0da: Pushed 
9f8566ee5135: Pushed 
latest: digest: sha256:63a86f231cf0415fe02ac11e31b00a959563ff3e264955c7c0236bd398b1c775 size: 1573
[root@test101 harbor]#

四、360瀏覽器設置問題引發的harbor倉庫訪問異常

問題描述:

部署好harbor倉庫以後,發現瀏覽器訪問界面出不來,一直處於這樣的狀態:
總結—Harbor倉庫部署和使用問題集錦

緣由分析:

後來發現由於這臺機器上只有360瀏覽器,存在模式的區別,如今用的是默認的兼容模式,因此界面出不來,並不是服務的問題。

解決辦法:

把瀏覽器換成極速模式就行了:
總結—Harbor倉庫部署和使用問題集錦
爲了不這種沒必要要的問題,最好不要用360這樣的瀏覽器,最好使用谷歌瀏覽器

五、harbor項目訪問級別引發pull鏡像失敗

問題描述:

測試在rancher2.0上部署一個harbor倉庫的服務到服務器上,發現拉取鏡像失敗,報錯repository does not exist or may require ‘docker login’:
總結—Harbor倉庫部署和使用問題集錦

緣由分析:

由於harbor倉庫的項目訪問級別設置成了私有,因此rancher-server和agent服務器都訪問不到,所以報錯沒法拉取鏡像。
由於在服務器上測試手動pull鏡像,是測試的公開項目裏面的鏡像,因此沒有發現該問題:
總結—Harbor倉庫部署和使用問題集錦

解決方法:

將harbor上面項目的訪問級別設置爲公開,就行了

六、錯誤配置harbor地址,致使pull鏡像失敗

問題描述:

在另外一次使用rancher2.0測試部署服務的時候,服務器上拉取了harbor倉庫的web鏡像,可是拉取鏡像一直失敗,報錯以下:
總結—Harbor倉庫部署和使用問題集錦

緣由分析:

看到這個熟悉的錯誤信息,立刻查看docker配置文件,發現harbor的地址多寫了個http://
總結—Harbor倉庫部署和使用問題集錦

解決方法:

去掉配置文件的http:// 而後重啓docker服務便可:
總結—Harbor倉庫部署和使用問題集錦

而後重啓docker服務,從新部署,恢復正常:
總結—Harbor倉庫部署和使用問題集錦

相關文章
相關標籤/搜索