首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在私有注册表上代理后的docker登录可以使TLS握手超时。

在私有注册表上代理后的docker登录可以使TLS握手超时。
EN

Stack Overflow用户
提问于 2017-04-21 11:48:34
回答 4查看 14K关注 0票数 11

我们有一个私人的码头注册(基于portus,但无论如何),我试图将图像推送到这个注册表,但它不工作。如果出现以下错误消息,它将失败:

代码语言:javascript
复制
$ sudo docker login archive.docker-registry.mycompany.com
Username: mylogin
Password: 
Error response from daemon: Get https://archive.docker-registry.mycompany.com/v1/users/:
    net/http: TLS handshake timeout
$ 

我已经在/etc/systemd/system/docker.service.d/http-proxy.conf中配置了代理(我的码头位于centos 7上):

代码语言:javascript
复制
[Service]
Environment="HTTP_PROXY=http://proxy.mycompany.com:8000/" "NO_PROXY=localhost,127.0.0.1,archive.docker-registry.mycompany.com"

但还是失败了。

我尝试使用HTTPS_PROXY而不是HTTP_PROXY,使用http或url中的https,我尝试手动下载证书并在系统中配置它们(Update Certs),但它一直失败。

当我以root用户的身份更改此配置文件时,我执行了:

代码语言:javascript
复制
# systemctl daemon-reload
# systemctl restart docker
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-21 11:48:34

实际上,我发现如果我注释掉整个Environment行,它对私有注册中心起作用,但不再适用于坞中心(当然,不再使用代理)。下面是对私有注册表和停靠中心公共注册表都有效的最后解决方案:

在NO_PROXY环境变量中,应该只使用域名,而不是FQDN (包括“归档”)。主机名前缀):

下面是我的配置文件:

代码语言:javascript
复制
[Service]
Environment="HTTP_PROXY=http://proxy.mycompany.com:8000/" "NO_PROXY=localhost,127.0.0.1,docker-registry.mycompany.com"

请注意,没有更多的“存档”。也不是“portus”前缀在NO_PROXY中,只是域名开始于“停靠-注册”。

正如我所看到的,docker登录命令行包括“存档”。前缀,这是误导,我认为它必须在NO_PROXY环境变量.但不,不应该。

希望它能帮到别人。我希望我以前在谷歌上找到了答案,但我没有,所以我只是在这里张贴,它可能会有帮助。

票数 9
EN

Stack Overflow用户

发布于 2018-08-27 13:59:16

如果您使用的是私有注册表,则需要将证书放在/etc/docker/certs.d/registryname/ca.crt下面。

注册名将相应更改

另外,请将您的MTU大小更改为1300,这也是我为解决错误所做的一件事。我想你可能已经做过了。MTU更改命令

ip link set dev eth0 mtu 1300

MTU大小对检查非常重要。

票数 4
EN

Stack Overflow用户

发布于 2018-11-06 19:15:45

我安装的最新稳定版本(18.xx)有这个问题,在降级到17.12.0-ce之后,它对我来说很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43541963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档