我试图通过遵循hello-world指令here在Windows(OS:Microsoft Windows 10 Pro 64bit,Docker ver:18.09.0,build 4d60db4)上运行docker。
然后,出现以下“服务器行为异常”错误:
Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: dial tcp: lookup <companyProxy> on 192.168.65.1:53: server misbehaving.
我尝试按照here的建议将DNS(在Docker设置-网络-DNS服务器中)从“自动”更改为“固定”(8.8.8.8或8.8.4.4),但仍然无法解决问题,并导致了另一种类型的错误(“超时”。
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
我在公司的代理服务器后面,并且已经在环境变量和docker设置上都设置了代理服务器(和凭据)。
我也尝试重新安装docker和hyperV,但仍然遇到相同的问题。
有人可以帮忙吗?谢谢
最佳答案
我认为,您上次配置中的超时是由于您没有通过代理访问那些外部DNS服务器(8.8.8.8-8.8.4.4)而造成的。
您应该解决第一个问题,即server misbehaving
。就像我提到的here一样,这是由docker无法通过代理进行身份验证引起的。我的解决方案是使用cntml。
如果遵循他们的指导原则,那么cntlm
配置实际上非常简单。当您运行cntlm
时,您需要配置docker以将其用作代理而不是公司代理。只是没有身份验证的普通代理-如果在同一台计算机上运行,则很可能是127.0.0.1:3128。 cntlm
将处理公司代理上的身份验证。
作为引用,这是我使用的cntlm配置:
Username <username>
Domain <domain>
Password <password>
PassLM <PassLM output of cntlm -H>
PassNT <PassNT output of cntlm -H>
PassNTLMv2 <PassNTLMv2 output of cntlm -H>
Proxy <corporate proxy>:<corporate proxy port>
NoProxy localhost, 127.0.0.*, 10.*, 192.168.*, 172.16.*.*
Listen 3128
您可以通过运行
cntlm -H -u <username>@<domain>
来获得哈希值。确保以网关模式
cntlm -g
(而不是cntlm -v
)运行cntlm。祝你好运!