Docker无法在代理TLS握手超时后提取图像

Docker无法在代理TLS握手超时后提取图像,docker,ssl,proxy,docker-registry,docker-pull,Docker,Ssl,Proxy,Docker Registry,Docker Pull,我在CentOS 7上安装了最新的Docker版本18.06.0。 我的服务器位于公司网络中,因此使用代理服务器访问注册表。 我已经根据docker文档添加了代理设置。 但最后在中添加代理设置部分起作用。i、 现在docker正在使用代理在图像运行之前提取图像 但现在它无法给出以下错误: $ sudo docker run hello-world Unable to find image ‘hello-world:latest’ locally docker: Error response fr

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

但现在它无法给出以下错误:

$ sudo docker run hello-world
Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: net/http: TLS handshake timeout.
此外,登录失败:

$ sudo docker login --username=XXXX
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: EOF
我的代理相当快。当我使用wget或curl从互联网上下载任何东西时,我看到了90到100Mbps的速度。 我机器上的其他应用程序UTIL(如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握手超时问题的帖子,但没有得到任何对我有用的答案或建议。
我的代理很好,docker正在使用它。我不明白为什么会有这么严重的超时。

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


干杯

我在防火墙后面也面临同样的问题。请遵循以下步骤:

$ 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
配置文件是:

[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\u PROXY=http
是正确的


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

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


我找到了这个解决方案。

当我将docker从docker版本17.12.1-ce,build 7390fc6升级到docker版本18.06.1-ce,build e68fc7a时,我也遇到了同样的问题。降级docker解决了我的问题。我知道这不是一个解决方案,但希望这个帮助我尝试了布朗的建议,并将我的降级到17.12.0-ce,它现在运行良好,甚至不需要配置代理设置。我猜它选择默认的系统代理设置。可能是@rebulation的重复。这个问题是关于私有存储库的登录问题。这与我的docker的公共回购登录失败不同。我已经尝试过那里建议的选项。“这些都不起作用,”布朗宁格尔说,我同意。它适用于较低版本,但不适用于最新版本。我想使用这个版本。也许可以尝试使用指定的代理,而不使用本地主机的代理,这真的很有效。我的HTTPS\u proxy的代理url是http://:它对我有效,我的问题是我使用的是HTTPS\u proxy=HTTPS,而我的代理不支持HTTPS,所以我改为HTTPS\u proxy=http,它工作起来很有魅力