开发者社区 问答 正文

在云服务器搭建docker私有仓库后无法push的问题

按照教程:
https://www.linuxidc.com/Linux/2018-03/151308.htm
在云服务器上搭建docker私有仓库后,docker push报错:
Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client
这是个常规问题,教程里有提到:
而且,网上有另一种同样得到非常多人实践通过的解决方案。

都无法解决:

展开
收起
1486388122094340 2018-12-13 17:00:22 1172 分享 版权
阿里云 AI 助理回答

遇到Docker push报错,提示“Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client”时,表明您的Docker客户端尝试通过HTTPS协议与私有仓库通信,但仓库服务端响应的是HTTP协议,导致协议不匹配。根据您提及的教程和网上常见解决方案未能解决问题的情况,可以尝试以下步骤进行排查和解决:

  1. 检查私有仓库配置: 确认Docker私有仓库(如Registry)是否正确配置为支持HTTPS。如果您的私有仓库仅支持HTTP,需要确保客户端也使用HTTP协议访问。

  2. 修改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>替换为您的镜像仓库地址。注意,禁用内容信任仅适用于测试或内部网络环境,生产环境中应确保安全传输。

  3. 配置私有仓库SSL证书: 如果希望使用HTTPS,确保您的私有仓库已正确安装SSL证书,并且Docker daemon和仓库服务都配置为使用HTTPS。具体操作可参考Docker官方文档或私有仓库软件(如Registry、Harbor等)的相应指南。

  4. 检查Docker守护进程配置: 检查/etc/docker/daemon.json文件,确认没有强制要求使用HTTPS连接私有仓库。如果有类似配置,请调整以允许HTTP连接或确保HTTPS配置正确。

  5. 重启Docker服务: 修改配置后,记得重启Docker服务使更改生效。

    sudo systemctl restart docker
    
  6. 防火墙与网络策略检查: 确保服务器的防火墙规则和网络策略未阻止HTTP或HTTPS流量进出私有仓库端口(本例中为5000)。

通过上述方法,通常可以解决您遇到的问题。如果问题依旧存在,建议详细检查私有仓库的日志文件,以便获取更具体的错误信息进行进一步诊断。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答