Harbor仓库http协议无法登录
Harbor仓库http协议无法登录
前言
在使用 Docker 时,搭建私有镜像仓库是一个常见的需求。Harbor 作为一款开源的镜像仓库管理工具,因其丰富的功能和良好的用户体验,受到了许多开发者的青睐。然而,在配置 Harbor 仓库时,如果使用的是 HTTP 协议,可能会遇到登录报错的问题。本文将详细讲解如何解决这一困扰。
问题现象
当尝试使用 HTTP 协议登录本地搭建的 Harbor 仓库时,可能会遇到以下报错信息:
1
2
3
4
5
6
7
8
9
docker login http://192.168.xx.xx
Username: admin
Password:
Error response from daemon: Get "https://192.168.xx.xx/v2/": dialing 192.168.xx.xx:443 matches static system exclude: connecting to 192.168.xx.xx:443: dial tcp 192.168.xx.xx:443: connect: connection refused
docker login http://192.168.xx.xx:80
Username: admin
Password:
Error response from daemon: Get "https://192.168.xx.xx:80/v2/": http: server gave HTTP response to HTTPS client
从错误信息可以看出,Docker 守护进程尝试通过 HTTPS 协议访问仓库,但实际仓库只支持 HTTP 协议,导致连接被拒绝。
解决方法
要解决这一问题,需要修改 Docker 的配置文件,允许其访问不安全的仓库。具体步骤如下:
修改 Docker 配置文件
-
打开 Docker 的配置文件
/etc/docker/daemon.json
。如果该文件不存在,可以手动创建。 -
在配置文件中添加
"insecure-registries"
配置项,并将 Harbor 仓库的 HTTP 地址添加到该列表中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"insecure-registries": ["http://192.168.xx.xx:80"], // 新增这一行
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
重启 Docker 服务
修改配置文件后,需要重启 Docker 服务以使配置生效。可以使用以下命令:
1
sudo systemctl restart docker
再次尝试登录
重启 Docker 服务后,再次尝试登录 Harbor 仓库:
1
2
3
4
docker login http://192.168.xx.xx:80
Username: admin
Password:
Login Succeeded
此时,应该可以看到 “Login Succeeded” 的提示信息,表示登录成功。
本文由作者按照
CC BY 4.0
进行授权