Harbor報錯:connect: connection refused,企業級容器鏡像倉庫 Harbor 的安裝配置與問題解決

一、Harbor 簡介

Harbor 是一個用於存儲和分發Docker鏡像的企業級Registry服務器。

Harbor具有的優勢:

1. 提供分層傳輸機制,優化網絡傳輸 Docker鏡像是是分層的,而如果每次傳輸都使用全量文件(所以用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID爲標識,確定傳輸的對象。
2. 提供WEB界面,優化用戶體驗 只用鏡像的名字來進行上傳下載顯然很不方便,需要有一個用戶界面可以支持登陸、搜索功能,包括區分公有、私有鏡像。
3. 支持水平擴展集羣 當有用戶對鏡像的上傳下載操作集中在某服務器,需要對相應的訪問壓力作分解。
4. 良好的安全機制 企業中的開發團隊有很多不同的職位,對於不同的職位人員,分配不同的權限,具有更好的安全性

二、Harbor 安裝

1、先安裝Docker並啓動Docker

未安裝 docker 可以參考文章:docker安裝

2、安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

給docker-compose添加執行權限
sudo chmod +x /usr/local/bin/docker-compose

查看docker-compose是否安裝成功
docker-compose -version

3、下載Harbor的壓縮包,並解壓安裝

點擊獲取下載地址:Harbor
https://github.com/goharbor/harbor/releases

tar -xf harbor-offline-installer-v1.10.2.tgz && mv harbor /usr/local/src/
修改hostname和port
cd /usr/local/src/harbor && vim harbor.yml
hostname: 192.168.66.102
port: 85

如果只用ip訪問就需要註釋掉https的選項
#https:
  #port: 443


安裝Harbor
./prepare
./install.sh

4、啓動 Harbor 後,訪問

docker-compose up -d 啓動
docker-compose stop 停止
docker-compose restart 重新啓動

訪問Harbor
http://localhost:85
默認賬戶密碼:admin/Harbor12345

在這裏插入圖片描述

三、打包上傳鏡像到 Harbor

1)登錄後提示成功
在linux總端登錄Harbor:
sudo docker login -u tens -p Tens123456 161.17.60.38:85
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
2)對鏡像進行打包

將要上傳的鏡像打tag 使其知道要上傳的地址
打包的方式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

sudo docker images
REPOSITORY         TAG          IMAGE ID            CREATED             SIZE
eureka             v1           c0b9a9abf81e        About an hour ago   150MB

sudo docker tag eureka:v1 161.17.60.38:85/tensquare/eureka:v1
3)把打包好的鏡像上傳到
sudo docker push 161.17.60.38:85/tensquare/eureka:v1
The push refers to repository [161.17.60.38:85/tensquare/eureka]
5be351ff00ca: Pushed 
ceaf9e1ebef5: Pushed 
9b9b7f3d56a0: Pushed 
f1b5933fe4b5: Pushed 
v1: digest: sha256:4871feb25d52cd4275d97b63a85556043a3efee74349e008807383e1d7e9132f size: 1159
4)在 Harbor 上面就可看到上傳的鏡像

在這裏插入圖片描述

四、下載 Harbor 上項目的鏡像到本地

1)登錄成功後,拉取鏡像

下載的鏡像要知道要下載的地址和對應目錄和版本號
拉取的方式:docker push [OPTIONS] NAME[:TAG]

在linux總端登錄Harbor:
sudo docker login -u tens -p Tens123456 161.17.60.38:85
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

sudo docker pull 161.17.60.38:85/tensquare/eureka:v1
v1: Pulling from tensquare/eureka
e7c96db7181b: Already exists 
f910a506b6cb: Already exists 
c2274a1a0e27: Already exists 
a5100da0a6a8: Pull complete 
Digest: sha256:3ffae5f17b10b0366de123902aa78ed3426a7069b4d01b3fcc1b2ac38b499038
Status: Downloaded newer image for 161.17.60.38:85/tensquare/eureka:v1

在這裏插入圖片描述

2)在拉取的機器上面能看到剛剛拉取的鏡像
sudo docker images
REPOSITORY                           TAG    IMAGE ID        CREATED           SIZE
161.117.60.138:85/tensquare/eureka   v1     26f03cdd882a    19 minutes ago    150MB

注意:遇到的坑

這裏用的docker版本爲:18.06.3
docker -v
Docker version 18.06.3-ce, build d7080c1

登錄 Harbor 的時候會報錯:
Error response from daemon: Get http://161.17.60.38:85/v2/: dial tcp 161.17.60.38:85: connect: connection refused

上傳鏡像到 Harbor 的時候,會報錯:
The push refers to repository [161.17.60.38:85/tensquare/eureka]
Get http://161.17.60.38:85/v2/: dial tcp 161.17.60.38:85: connect: connection refused
8DB6CD

在網上搜了半天,有的是去編輯 /etc/docker/daemon.json 文件,而有的是在 docker.service

如果在 /etc/docker/daemon.json 的解決辦法:添加 insecure-registries 即可
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["161.17.60.38:85"]
}
如果是在 docker.service 解決辦法:在 ExecStart 添加 --insecure-registry
find / -name docker.service -type f
/usr/lib/systemd/system/docker.service

在 ExecStart 這行後面加上 -insecure-registry=Harbor登錄地址
sudo vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry=161.17.60.38:85

sudo systemctl daemon-reload
sudo systemctl restart docker
......

重啓完成後重新登錄即可

在linux總端登錄Harbor:
sudo docker login -u tens -p Tens123456 161.17.60.38:85
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章