使用代理的 docker pull 給出“第一個記錄看起來不像 TLS 握手”

使用代理的 docker pull 給出“第一個記錄看起來不像 TLS 握手”

我的公司伺服器必須使用代理進行出站流量。按照 Microsoft 的 docker 文檔,我執行了 Powershell 命令:

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://my.secret.proxy.net:8888", [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "https://my.secret.proxy.net:8888", [EnvironmentVariableTarget]::Machine)
Restart-Service docker

但運行docker build之後給了我:

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

我嘗試使用代理地址等http代替。https該代理是透明代理,不執行任何“智能”操作。

運行pip install flake8 --proxy=https://my.secret.proxy.net:8888有效,所以我知道代理有效。

有任何想法嗎?有進一步調試的技巧嗎?謝謝!

答案1

在你的"HTTPS_PROXY", "https://my.secret.proxy.net:8888"改變https://http://

答案2

在目前版本的 docker for windows 中,有一個資源 -> 代理UI 的部分,您可以在其中設定用於拉取影像的代理程式。

參考:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

您仍然需要在運行的容器中配置代理變數。為此,您可以更新~/.docker/config.json為:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://192.168.1.12:3128",
     "httpsProxy": "http://192.168.1.12:3128",
     "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
   }
 }
}

我不確定該文件在 Windows 上的位置,特別是如果您不使用 WSL2,但如果您已docker login登入註冊表,則該文件應該已經存在。

參考:https://docs.docker.com/network/proxy/

相關內容