版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到Docker push报错,提示“Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client”时,表明您的Docker客户端尝试通过HTTPS协议与私有仓库通信,但仓库服务端响应的是HTTP协议,导致协议不匹配。根据您提及的教程和网上常见解决方案未能解决问题的情况,可以尝试以下步骤进行排查和解决:
检查私有仓库配置: 确认Docker私有仓库(如Registry)是否正确配置为支持HTTPS。如果您的私有仓库仅支持HTTP,需要确保客户端也使用HTTP协议访问。
修改Docker客户端请求协议: 在执行docker push命令前,临时设置Docker daemon使用HTTP协议与私有仓库交互,而非默认的HTTPS。可以通过以下命令实现:
export DOCKER_CONTENT_TRUST=0
docker --config ~/.docker/config.json push --disable-content-trust=true <your-repo>
这里<your-repo>替换为您的镜像仓库地址。注意,禁用内容信任仅适用于测试或内部网络环境,生产环境中应确保安全传输。
配置私有仓库SSL证书: 如果希望使用HTTPS,确保您的私有仓库已正确安装SSL证书,并且Docker daemon和仓库服务都配置为使用HTTPS。具体操作可参考Docker官方文档或私有仓库软件(如Registry、Harbor等)的相应指南。
检查Docker守护进程配置: 检查/etc/docker/daemon.json文件,确认没有强制要求使用HTTPS连接私有仓库。如果有类似配置,请调整以允许HTTP连接或确保HTTPS配置正确。
重启Docker服务: 修改配置后,记得重启Docker服务使更改生效。
sudo systemctl restart docker
防火墙与网络策略检查: 确保服务器的防火墙规则和网络策略未阻止HTTP或HTTPS流量进出私有仓库端口(本例中为5000)。
通过上述方法,通常可以解决您遇到的问题。如果问题依旧存在,建议详细检查私有仓库的日志文件,以便获取更具体的错误信息进行进一步诊断。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。