我的公司伺服器必須使用代理進行出站流量。按照 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
登入註冊表,則該文件應該已經存在。