一尘不染

适用于Windows的Docker:尝试拉出时“服务器行为异常”

docker

我正在尝试按照此处的hello-world说明在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.

我试图按照此处的建议将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,但仍然遇到相同的问题。

有人可以帮忙吗?谢谢


阅读 673

收藏
2020-06-17

共1个答案

一尘不染

我认为,您上次配置中的超时是由于您没有通过代理到达那些外部DNS服务器(8.8.8.8-8.8.4.4)而造成的。

您应该解决第一个问题,即server misbehaving。就像我在这里提到的一样,这是由docker无法通过代理进行身份验证引起的。我的解决方案是使用cntml

cntlm如果遵循他们的指导,配置实际上非常简单。当你cntlm运行,你需要配置泊坞窗使用,作为一个代理,而不是你的企业代理。只是没有身份验证的普通代理-
如果在同一台计算机上运行,​​则很可能是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 。

祝好运!

2020-06-17