环境: 自建 HarborDocker

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

在这里插入图片描述

Logo

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

更多推荐