docker login 报错: http: server gave HTTP response to HTTPS client
这个错误提示意味着的 `Docker` 客户端正在尝试通过 `HTTPS` 协议连接到一个只接受 `HTTP` 连接的服务器。这是因为 `Docker` 默认会尝试使用 `HTTPS` 连接到 `Docker Registry`。
环境: 自建 Harbor、Docker
1. 问题分析
# 命令,这里用的是 IP,可以为域名
docker login -u test 172.16.51.182:31120
# 输入密码
Password:
# 报错如下:
Error response from daemon: Get "https://172.16.51.182:31120/v2/":
http: server gave HTTP response to HTTPS client
这个错误提示意味着的 Docker 客户端正在尝试通过 HTTPS 协议连接到一个只接受 HTTP 连接的服务器。这是因为 Docker 默认会尝试使用 HTTPS 连接到 Docker Registry。
按照标准流程来说,应该 Harbor 仓库地址应该支持 Https;
如果对安全要求不高的话,可以通过一个简单的方式处理:
直接在 Docker 的配置文件中明确指定
Docker Registry服务器使用 HTTP 协议来解决这个问题。
以下是如何修改 Docker 的配置文件的步骤:
2. 处理方式
2.1 打开或创建 Docker 配置文件
这个文件通常位于 /etc/docker/daemon.json。如果该文件不存在,可以创建一个。
2.2 编辑 Docker 配置文件
选择自己熟悉的编辑器即可。
# 使用 vim
vim /etc/docker/daemon.json
在该文件中添加 insecure-registries 字段,并将 Docker Registry 服务器地址加入到这个字段的值中。例如上面的地址 172.16.51.182:31120(或域名):
{
// ...
"insecure-registries" : ["172.16.51.182:31120"]
// ...
}
根据实际情况,替换为自己的 Docker Registry 服务器的地址。
2.3 保存并关闭配置文件。
保存并关闭配置文件。
2.4 重新启动 Docker 服务。
在大多数 Linux 发行版中,可以使用以下命令来重启 Docker 服务:
sudo systemctl restart docker
大功告成,然后继续 HTTP 协议连接到相应的 Docker Registry 服务器。
docker login -u test 172.16.51.182:31120
# 会提示让输入密码:
Password:
# 登录成功
Login Succeeded
【注】上面的算是一个骚操作,但是还是建议 Docker Registry 镜像仓库服务器支持 HTTPS。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)