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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章