Docker 无法拉取代理服务器后面的镜像

Docker 无法拉取代理服务器后面的镜像

我在 CentOS Linux 7 上使用 docker 版本 20.10.14,我刚刚安装了 docker 并在 /usr/lib/systemd/system/docker.service 中设置了代理设置,我的代理设置是

Environment="HTTP_PROXY=http://10.330.100.100:3128/"
Environment="HTTPS_PROXY=https://10.330.100.100:3128/"
Environment=no_proxy=localhost,127.0.0.1

我收到类似这样的错误

Error response from daemon: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: tls: first record does not look like a TLS handshake

当我将 HTTPS_PROXY 从 https --> http 更改时,我得到

Error response from daemon: Get "https://registry-1.docker.io/v2/": Bad Request

当我尝试卷曲“https://registry-1.docker.io/v2/”时,我得到了

curl: (56) Received HTTP code 400 from proxy after CONNECT

答案1

Environment="HTTP_PROXY=http://10.330.100.100:3128/"
Environment="HTTPS_PROXY=https://10.330.100.100:3128/"
                             ^                  ^^^^

在这里您可以将代理服务器配置为可通过普通 HTTP 和 HTTPS 访问。在同一端口上。这种情况极不可能发生。

您的代理服务器配置了自己的 TLS 证书,并将在不同的端口上监听 http 和 https。

或者,通常情况下,代理服务器仅支持纯 http 连接,对 HTTPS 资源的请求仍需要使用纯 HTTP 来连接到代理服务器。(一旦连接到代理,客户端将使用 CONNECT 方法通过代理与 Web 服务器建立 TLS 连接,从而创建端到端加密通道。)

换句话说:您可能需要将 HTTPS_PROXY 变​​量更改为:

Environment="HTTPS_PROXY=http://10.330.100.100:3128/"

当您需要使用代理时,这通常意味着 TLS 流量也受到控制。您可能需要安装并启用组织的 CA 证书。


当您需要使用代理时,这意味着您组织中的其他人也需要这样做。

这意味着您(或者更确切地说您的代理服务器)将很快遇到 docker 速率限制。请参阅:https://docs.docker.com/docker-hub/download-rate-limit/

相关内容