![使用代理的 docker pull 给出“第一条记录看起来不像是 TLS 握手”](https://linux22.com/image/756392/%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86%E7%9A%84%20docker%20pull%20%E7%BB%99%E5%87%BA%E2%80%9C%E7%AC%AC%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E7%9C%8B%E8%B5%B7%E6%9D%A5%E4%B8%8D%E5%83%8F%E6%98%AF%20TLS%20%E6%8F%A1%E6%89%8B%E2%80%9D.png)
我有一家公司服务器,必须使用代理来处理出站流量。按照微软的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
登录到注册表,该文件应该已经存在。