Docker 私有注册表问题
Posted
技术标签:
【中文标题】Docker 私有注册表问题【英文标题】:Docker private registry issue 【发布时间】:2015-08-13 07:24:49 【问题描述】:我在 UBUNTU 14.04 上运行私有注册表:
docker run -d -p 5000:5000 注册表
进程出现在我的 docker 进程列表中。我写了命令:curl my-external-ip,我得到了这个:
"\"docker-registry 服务器\""
问题是 当我尝试在本地主机上推送图像时它工作正常,但是在我想推送到外部 ip 之后(它必须可供更多人使用)我得到了这个:
推送指的是存储库 [MY-EXTERNAL-IP:5000/hello] (len: 1) 无法 ping 注册表端点https://MY-EXTERNAL-IP:5000/v0/ v2 ping 尝试失败并出现错误:获取 https://MY-EXTERNAL-IP:5000/v2/: EOF v1 ping 尝试失败并出现错误:Get ht*ps://MY-EXTERNAL-IP:5000/v1/_ping: EOF
我在我的公司使用代理,但我将导出 http_proxy、https_proxy、ftp_proxy 添加到我的 docker 文件和 --insecure-registry。
【问题讨论】:
【参考方案1】:看起来您的 docker 守护进程无法通过https
协议访问 docker 注册表(your-external-ip)(通常它使用 443 端口)。
也许你可以先检查一下。
但在不安全模式下,网络发生在 http 协议上。所以你可以告诉你 docker 守护进程信任 insecure-registry。
尝试使用 --insecure-registry="YOUR_EXTERNAL_IP"
运行 docker 守护进程
【讨论】:
如果你不想重启你的 docker 服务,你可以使用docker pull --allow-insecure-ssl
做同样的事情,但是在客户端【参考方案2】:
您的 Docker 守护程序似乎仍然不理解您的 $EXTERNAL_IP
上的注册表应该通过 HTTP 而不是 HTTPS 访问。您需要确保守护程序使用 --insecure-registry $EXTERNAL_IP
选项运行:
ps aux | grep docker
如果您无法在那里找到它,您可能在DOCKER_OPTIONS
中出错了。
【讨论】:
以上是关于Docker 私有注册表问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 docker 中从私有 1.0 注册表中搜索图像? [关闭]
在 nginx 代理后面使用 docker 私有注册表 (v2) 的 HTTP 响应格式错误
`docker pull` 从私有 gitlab 注册表返回 `denied: access denied`