Docker 工具箱教程 Client.Timeout 等待时超出 headers

Docker Toolbox Tutorial Client.Timeout exceeded while awaiting headers

我正在按照 https://docs.docker.com/get-started/part2/#publish-the-image

上的指南进行操作

在整个指南中,我遇到过这个错误,有时会出现,有时当我重新运行命令时它们会起作用。

docker push %username%/%repository%:%tag%

我会收到 Using default tag: latest 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)

的回复

我正在使用 Windows 主页和 Docker 工具箱。

如果需要任何其他信息,请告诉我。

对于正在查找的其他人,我找到了答案 here which led me to here

这些步骤特别对我很有帮助。以防将来链接断开。

这适用于 Windows 10 Home/Docker 工具箱

  1. 右击屏幕右下角的wifi图标,打开网络和共享中心。
  2. 右键单击 "connections:"
  3. 处的连接
  4. 单击“属性”
  5. 取消选中 IPv6
  6. 检查 IPv4
  7. 点击属性
  8. Select 单选按钮使用以下 DNS 地址
  9. 优先使用 8.8.8.8
  10. 重新启动计算机并重试。

以防有人运行他自己的 docker 存储库。 我在 运行

时有一个类似的 "Client.Timeout exceeded while awaiting headers"
docker login myownrepo.com:5000

碰巧我只对5000端口进行了端口转发,而忘记为5001端口添加。 通过添加指向相同 docker-repo-host.

的端口 5001(在我的路由器上)解决了这个问题

只需转到 Docker 的 Settings > Network 并将 DNS 服务器单选按钮更改为 Fixed

不幸的是,上面的答案对我的情况没有帮助,但是 重新启动 Docker 有帮助。

"Client.Timeout exceeded while awaiting headers" 是多种可能原因的症状。就我而言,这只是 专用网络防火墙 阻止 docker 客户端计算机访问注册表主机的情况。

要测试是否是这种情况(对于可能正在阅读本文的人),请先尝试暂时 禁用专用网络防火墙。

例如,如果私有 docker 注册表托管在 Windows 10 上:

1) 打开 Windows 安全性

2) 单击防火墙和网络保护

3) 确保专用网络 "active" 并点击它

4) 在 "Microsoft Defender Wall" 下关闭私人防火墙

如果 IP 突然可以访问,那么您需要在主机上重新启用防火墙并将其配置为允许访问 docker 注册表。

除非需要访问注册表,否则不要添加代理。在我的公司网络背后的案例中,我添加了导致超时错误的代理,在删除 Docker 桌面中的代理配置后,它得到了解决。希望对大家有帮助。

我在 WSL2 下使用 docker-reg:5000 时遇到了这个问题。 将其添加到 /etc/hosts 无效。

由于docker 在windows 下确实有效,您需要将其添加到WINDOWS 主机文件中。 C:\Windows\System32\drivers\etc\hosts

在我的案例中,缓慢且不稳定的互联网 连接导致了问题。因此,如果可以 提高连接的性能 ,那么就这样做,但在我的情况下,我 重试了多次 并且在一段时间后它起作用了。