Docker推送私有仓库报错server gave HTTP response to HTTPS client如何解决
Snap安装Docker推送私有HTTP仓库报错解决步骤
报错信息:
server gave HTTP response to HTTPS client
核心原因
Docker默认仅允许使用HTTPS协议连接镜像仓库,使用未配置SSL证书的HTTP私有仓库时,需要将仓库地址加入Docker的insecure-registries信任列表。Snap安装的Docker加载配置的逻辑与常规安装版本不同,常规配置路径不会生效,导致修改配置后问题未解决。
可行解决步骤
- 第一步:确认配置文件内容正确
只需要修改snap版本Docker的专属配置文件/var/snap/docker/current/config/daemon.json,其余两个路径的配置文件不需要修改,snap版本Docker不会读取。配置文件需为合法JSON格式,示例如下:
{ "insecure-registries": ["你的私有仓库IP/域名:端口"] }
注意:如果配置文件中已有其他配置项,需要在原有字段后添加英文逗号,再新增insecure-registries字段,避免JSON语法错误,insecure-registries列表内的地址不要加http://前缀。
- 第二步:正确重启Docker服务
snap安装的服务需要使用snap专属命令控制,不要使用systemctl操作:
# 停止Docker服务 sudo snap stop docker # 启动Docker服务 sudo snap start docker
- 第三步:验证配置是否生效
执行命令查看Docker运行信息:
docker info
在输出内容中找到Insecure Registries字段,确认你添加的私有仓库地址已经在列表内,即可正常推送镜像到私有仓库。
异常排查
如果配置后仍报错,按以下顺序排查:
- 验证私有仓库本身可正常访问,执行命令
curl http://你的私有仓库地址:端口/v2/,确认可以正常返回响应,排除仓库服务故障问题。 - 如果私有仓库使用域名访问,检查本地
/etc/hosts文件是否配置了正确的域名解析规则,避免解析错误访问到其他服务。 - 检查Docker服务运行状态,执行命令
sudo snap logs docker查看启动日志,确认没有因为daemon.json语法错误导致配置被忽略。
内容的提问来源于stack exchange,提问作者Kamil
相关产品推荐
相关产品推荐

