Docker无法将图像拖到代理TLS握手超时之后

时间:2018-08-17 07:29:43

标签: docker ssl proxy docker-registry docker-pull

我在CentOS 7上安装了最新的Docker版本18.06.0。 我的服务器在公司网络中,因此使用代理服务器访问注册表。 我已经根据docker文档添加了代理设置。 但最终添加代理设置部分起作用。即,现在docker正在使用代理在映像运行之前提取映像。

但是现在无法给出以下错误: $ sudo docker运行hello-world 无法在本地找到图片“ hello-world:latest” docker:来自守护程序的错误响应:获取https://registry-1.docker.io/v2/:proxyconnect tcp:net / http:TLS握手超时。

此外,登录失败: $ sudo docker login --username = XXXX 密码: 来自守护程序的错误响应:获取https://registry-1.docker.io/v2/:proxyconnect tcp:EOF

我的代理非常快。使用wget或curl从Internet下载任何内容时,我看到的速度为90至100Mbps。 我的计算机上的其他应用程序utils(例如yum)正在完美地使用此代理,并且运行良好。 现在我不知道为什么只有Docker在下载映像时会有问题。

安装和配置的详细信息如下:

版本:

$ sudo docker version
Client:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:08:18 2018
OS/Arch: linux/amd64
Experimental: false

服务器:

Engine:
Version: 18.06.0-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: 0ffa825
Built: Wed Jul 18 19:10:42 2018
OS/Arch: linux/amd64
Experimental: false

操作系统版本:

Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511

Docker代理配置:

$ cat /etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment=“HTTP_PROXY=http://pqr.corp.xxx.com:8080”
Environment=“HTTPS_PROXY=https://pqr.corp.xxx.com:8080”
Environment=“NO_PROXY=localhost,127.0.0.1”

添加此配置后,我已经完成

sudo systemctl daemon-reload
sudo systemctl restart docker

正在寻求具体帮助。

我浏览了有关TLS握手超时问题的大部分信息,但没有得到任何答复或建议。 我的代理很好,码头工人正在使用它。我不明白为什么会出现这种讨厌的超时情况。

4 个答案:

答案 0 :(得分:1)

我面前的答案都指向这个方向,但没有一个明确说明:删除所有https代理设置可以解决此问题。我有一个https-proxy.conf文件,就像OP和{{1 }}在删除docker pull行之后开始工作。我知道我使用的https代理可以正常工作,因此在Docker方面一定是一个问题。

我找到了此解决方案on serverfault

答案 1 :(得分:0)

原因通常与您的网络设置有关。尤其是,如果您的Docker使用Proxy设置,请使用“无代理”选项将其设置为临时,它应该可以工作。

欢呼

答案 2 :(得分:0)

我在防火墙后面也遇到了同样的问题。请按照以下步骤操作:

$ sudo vim /etc/systemd/system/docker.service.d/http_proxy.conf
[Service]
Environment=“HTTP_PROXY=http://username:password@IP:port/”

请勿使用或删除https_prxoy.conf文件。

重新加载并重新启动docker

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    $ docker pull hello-world
    Using default tag: latest
    latest: Pulling from library/hello-world
    1b930d010525: Pull complete
    Digest: sha256:2557*********************************8
Status: Downloaded newer image for hello-world:latest

答案 3 :(得分:0)

配置文件为:

[Service]
Environment=“HTTP_PROXY=http://pqr.corp.xxx.com:8080”
Environment=“HTTPS_PROXY=https://pqr.corp.xxx.com:8080”
Environment=“NO_PROXY=localhost,127.0.0.1”

请注意第三行:HTTPS_PROXY = https

代理服务器是否支持HTTPS?否则应该有一个错误。

也许HTTPS_PROXY=http是正确的。

顺便说一句,类似的错误是Get https://registry-1.docker.io/v2/: proxyconnect tcp: EOF