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

相關內容