我在 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/