Docker Registry 登录错误修复
错误信息
Error response from daemon: Get "https://192.168.3.123:5000/v2/": http: server gave HTTP response to HTTPS client问题原因
Docker 客户端默认尝试使用 HTTPS 连接 Registry,但 Registry 服务器返回的是 HTTP 响应。
解决方案
方案 1:配置 Docker 允许不安全的 Registry(推荐用于内网)
Linux 系统
编辑 /etc/docker/daemon.json:
sudo vi /etc/docker/daemon.json添加以下内容:
{
"insecure-registries": ["192.168.3.123:15000"]
}重启 Docker 服务:
sudo systemctl restart dockermacOS / Windows
- 打开 Docker Desktop
- 进入 Settings → Docker Engine
- 在 JSON 配置中添加:
{
"insecure-registries": ["192.168.3.123:15000"]
}- 点击 “Apply & Restart”
方案 2:使用 HTTP 协议登录
如果 Registry 使用 HTTP(非 HTTPS),可以在登录时指定协议:
# 使用 http:// 前缀
docker login http://192.168.3.123:15000 -u admin -p docker
# 或者使用 --password-stdin(更安全)
echo "docker" | docker login http://192.168.3.123:15000 -u admin --password-stdin方案 3:配置 Registry 使用 HTTPS(生产环境推荐)
如果 Registry 应该使用 HTTPS,需要:
确保证书配置正确
- 证书文件存在于
/data/docker/docker-registry/certs/ ca.crt和ca.key文件有效
- 证书文件存在于
检查 docker-compose.yml 配置
environment: - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/ca.crt - REGISTRY_HTTP_TLS_KEY=/certs/ca.key验证端口映射
ports: - "15000:443" # 确保端口映射正确添加证书到 Docker 客户端信任列表
# 复制证书到 Docker 证书目录 sudo mkdir -p /etc/docker/certs.d/192.168.3.123:15000 sudo cp /path/to/ca.crt /etc/docker/certs.d/192.168.3.123:15000/ca.crt # 重启 Docker sudo systemctl restart docker
快速修复命令
如果 Registry 使用 HTTP(内网环境)
# 1. 配置 Docker daemon
sudo tee -a /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["192.168.3.123:15000"]
}
EOF
# 2. 重启 Docker
sudo systemctl restart docker
# 3. 使用 HTTP 登录
docker login http://192.168.3.123:15000 -u admin -p docker如果 Registry 使用 HTTPS
# 1. 添加证书到信任列表
sudo mkdir -p /etc/docker/certs.d/192.168.3.123:15000
sudo cp /data/docker/docker-registry/certs/ca.crt /etc/docker/certs.d/192.168.3.123:15000/ca.crt
# 2. 重启 Docker
sudo systemctl restart docker
# 3. 使用 HTTPS 登录
docker login 192.168.3.123:15000 -u admin -p docker验证配置
# 检查 Docker daemon 配置
cat /etc/docker/daemon.json
# 测试连接
curl -k http://192.168.3.123:15000/v2/
# 或
curl -k https://192.168.3.123:15000/v2/
# 登录测试
docker login 192.168.3.123:15000 -u admin -p docker安全建议
- 生产环境:使用 HTTPS + 有效证书
- 内网环境:可以使用 HTTP +
insecure-registries - 密码安全:使用
--password-stdin而不是-p参数
# 安全方式登录
echo "your-password" | docker login 192.168.3.123:15000 -u admin --password-stdin作者:Jeebiz 创建时间:2025-12-09 21:54
最后编辑:Jeebiz 更新时间:2025-12-10 15:39
最后编辑:Jeebiz 更新时间:2025-12-10 15:39