![Docker 私有注册表,禁止 docker push](https://linux22.com/image/689975/Docker%20%E7%A7%81%E6%9C%89%E6%B3%A8%E5%86%8C%E8%A1%A8%EF%BC%8C%E7%A6%81%E6%AD%A2%20docker%20push.png)
我设置了一个私有注册表,运行良好。Docker 1.10。我选择更改主机并重新创建证书。在我的服务器上一切运行良好,但在我的客户服务器上,我无法将图像推送到注册表:
unable to ping registry endpoint https://my.customer.private.hostname:5000/v0/
v2 ping attempt failed with error: Get https://my.customer.private.hostname:5000/v2/: Forbidden
v1 ping attempt failed with error: Get https://my.customer.private.hostname:5000/v1/_ping: Forbidden
我在 Google 上找不到其他人谈论“禁止”的答案。我在哪里可以搜索以了解?我已经删除了容器、图像、卸载了 docker、重新安装了 docker,但仍然出现相同的错误。我唯一没有删除的是用于存储 docker 数据的 Thinpool(devicemapper)。
答案1
docker 有一个 systemd 配置文件:
/etc/systemd/system/docker.service.d/http-proxy.conf
和
[服务] 环境="HTTP_PROXY=http://代理:3128“环境=“NO_PROXY=localhost,127.0.0.0/8”
注册表 IP 不是本地主机,因此我需要将主机添加到 NO_PROXY 变量中。我仍然不明白为什么第一个主机会工作。重新启动不使用 https(仅 http)的注册表容器并使用 tcpdump 可以帮助我们解决此问题。
答案2
对于我来说,这很奇怪,docker 尝试通过 https 访问 5000 端口,然后你使用 http 对同一端口进行 curl 并且成功了。
可能你正在做:docker pull my.customer.private.hostname:5000 xxx/yyy
而不是docker pull my.customer.private.hostname xxx/yyy
问候