
我在 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 --> http 更改 HTTPS_PROXY 時,我得到
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/