我有一家公司服务器,必须使用代理来处理出站流量。按照微软的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
当前版本的 Windows 版 Docker 有一个资源 -> 代理您可以在 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
登录到注册表,该文件应该已经存在。