You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker私有Registry无法通过HTTPS正常运行问题求助

解决Docker私有Registry HTTPS访问报错问题

核心问题排查

你遇到的错误http: server gave HTTP response to HTTPS client,本质是Registry容器未正确启用HTTPS服务,大概率由以下原因导致:

  1. 启动命令缺失镜像名,容器未正常启动
  2. 证书文件路径/权限错误,容器无法加载HTTPS证书
  3. Docker客户端未信任自签名证书

分步修复

1. 修正Registry启动命令

你的启动命令末尾缺少官方Registry镜像名(registry:2),这会导致容器无法正常创建。执行完整的启动命令:

sudo docker run -d -p 5000:5000 \
-v /docker_data/images:/var/lib/registry \
-v /docker_data/certs:/certs \
-e registry_http_tls_certificate=/certs/domain.crt \
-e registry_http_tls_key=/certs/domain.key \
--restart=always \
--name registry \
registry:2

2. 验证证书配置

  • 确认宿主机/docker_data/certs目录下存在domain.crt和domain.key,且文件名与环境变量配置完全一致
  • 调整证书文件权限,确保容器能读取:
    sudo chmod 644 /docker_data/certs/domain.crt /docker_data/certs/domain.key
    
  • 查看容器日志,确认证书加载正常:
    sudo docker logs registry
    
    若日志中有证书相关报错(如文件不存在、权限不足),修复后重启容器:
    sudo docker restart registry
    

3. 配置Docker客户端信任自签名证书

自签名证书默认不被Docker认可,需在登录客户端(Ubuntu 22/CentOS 8)上做如下配置:

Ubuntu 22 客户端

# 创建证书目录(替换FQDN为你的实际域名)
sudo mkdir -p /etc/docker/certs.d/FQDN:5000
# 复制自签名证书到指定目录
sudo cp /docker_data/certs/domain.crt /etc/docker/certs.d/FQDN:5000/ca.crt
# 重启Docker服务
sudo systemctl restart docker

CentOS 8 客户端

# 创建证书目录(替换FQDN为你的实际域名)
sudo mkdir -p /etc/docker/certs.d/FQDN:5000
# 复制自签名证书到指定目录
sudo cp /docker_data/certs/domain.crt /etc/docker/certs.d/FQDN:5000/ca.crt
# 重启Docker服务
sudo systemctl restart docker

4. 重新测试登录

完成上述配置后,重新执行登录命令:

docker login FQDN:5000

内容的提问来源于stack exchange,提问作者Mohammed Hashim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:40:32