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: E​​OF

我在我的公司使用代理,但我将导出 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`

在 AWS 中设置私有 docker 注册表并将其与 Beanstalk 一起使用

sh 快速清理私有Docker注册表上命名空间的图像