Docker 无法在代理 TLS 握手超时后拉取图像
Docker not able to pull images behind proxy TLS handshake timeout
我在 CentOS 7 上安装了最新的 Docker 版本 18.06.0。
我的服务器在公司网络中,因此使用代理服务器访问注册表。
我已根据 docker 文档添加了代理设置。
但最终添加代理设置部分起作用。即现在 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 的速度。
我机器上的其他应用程序实用程序(例如 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
OS版本:
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 设置了代理,请使用 "No Proxy" 选项将其临时设置,它应该可以工作。
干杯
我在防火墙后面也遇到了同样的问题。按照以下步骤操作:
$ 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_PROXY=http
是正确的。
顺便说一句,类似的错误是Get https://registry-1.docker.io/v2/: proxyconnect tcp: EOF
我之前的答案都指向这个方向,但都没有明确说明:删除所有 https 代理设置解决了这个问题。 我有一个 https-proxy.conf
文件就像在我删除 HTTPS_PROXY
行后,OP 和 docker pull
开始工作。我知道我使用的 https 代理可以正常工作,所以这一定是 Docker 方面的问题。
我找到了这个解决方案 on serverfault。
我在 CentOS 7 上安装了最新的 Docker 版本 18.06.0。 我的服务器在公司网络中,因此使用代理服务器访问注册表。 我已根据 docker 文档添加了代理设置。 但最终添加代理设置部分起作用。即现在 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 的速度。 我机器上的其他应用程序实用程序(例如 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
OS版本:
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 设置了代理,请使用 "No Proxy" 选项将其临时设置,它应该可以工作。
干杯
我在防火墙后面也遇到了同样的问题。按照以下步骤操作:
$ 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_PROXY=http
是正确的。
顺便说一句,类似的错误是Get https://registry-1.docker.io/v2/: proxyconnect tcp: EOF
我之前的答案都指向这个方向,但都没有明确说明:删除所有 https 代理设置解决了这个问题。 我有一个 https-proxy.conf
文件就像在我删除 HTTPS_PROXY
行后,OP 和 docker pull
开始工作。我知道我使用的 https 代理可以正常工作,所以这一定是 Docker 方面的问题。
我找到了这个解决方案 on serverfault。