Linux远程服务器Docker拉取镜像报错:http服务器向https客户端返回http响应
解决Docker拉取镜像时"http: server gave http response to https client"报错
检查daemon.json配置正确性
很多时候配置格式错误会导致设置不生效,针对Docker Hub的不安全仓库,正确的/etc/docker/daemon.json配置如下:
{ "insecure-registries": ["registry-1.docker.io"] }
- 注意仅填写域名部分,不要带
https://前缀 - 严格保证JSON格式合法,括号、逗号必须配对,否则Docker守护进程会启动失败
重启Docker服务加载新配置
修改配置后必须重启服务,否则新设置不会生效:
sudo systemctl daemon-reload sudo systemctl restart docker
执行以下命令验证配置是否成功加载:
docker info | grep -A 5 "Insecure Registries"
若输出中包含registry-1.docker.io,则说明配置已生效。
排查网络与代理干扰
如果服务器配置了代理,可能导致HTTPS请求被强制转为HTTP:
- 检查Docker代理配置:查看
/etc/systemd/system/docker.service.d/http-proxy.conf或~/.docker/config.json中的代理设置 - 临时关闭代理测试:执行
unset http_proxy和unset https_proxy后,再次尝试拉取镜像
验证镜像仓库地址正确性
报错中的URL存在https:://(多一个冒号)的格式错误,可尝试手动指定正确仓库地址拉取测试:
docker pull registry-1.docker.io/library/nginx
备选方案:切换国内镜像源
若以上方法均无效,可改用国内镜像源加速拉取,修改daemon.json为:
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://docker.mirrors.ustc.edu.cn" ] }
修改完成后重启Docker服务,再执行docker pull nginx测试。
内容的提问来源于stack exchange,提问作者Naga Manideep
相关产品推荐
相关产品推荐

