Docker推送-Net / http:TLS握手超时

luq*_*o33 5 docker dockerhub docker-registry

我已经在AWS EC2 Ubuntu 14.04实例上部署了私有Docker映像注册表。使用“ 让我们加密”证书保护注册表的安全。

不幸的是,我得到net/http: TLS handshake timeoutdocker push操作时间超过300秒:

这是time'd命令的输出:

[luqo33@home-pc containers]$ time docker push <my-registry-domain:5000>/nginx                                                    
The push refers to a repository [<my-registry-domain:5000>/nginx]
dda5a806f0b0: Layer already exists
ec35cfccb7f7: Layer already exists
94c1a232bb3f: Layer already exists
6d6b9812c8ae: Layer already exists
695da0025de6: Retrying in 1 second
fe4c16cbf7a4: Pushing [================================================>  ]   119 MB/123 MB
net/http: TLS handshake timeout

real    5m0.847s
user    0m0.097s
sys     0m0.017s
Run Code Online (Sandbox Code Playgroud)

regsitry:2容器的日志不显示任何错误-除了接收数据时出现意外的EOF的通知外。我还可以推送耗时少于5分钟的图像,而不会出现问题。

我怀疑这是系统设置的罪魁祸首,因为一旦操作超过300秒,超时总是发生。没有任何负载平衡器或其他代理。<my-registry-domain:5000>直接指向服务器IP。

我如何进一步调查并纠正这种情况?

编辑

当我将图像推送到其他服务器提供商(DigitalOcean),AWS ECS注册表甚至Docker Hub时,也会发生同样的情况!我发现很难相信Docker客户端将具有300秒的内置握手超时。

我在想,也许我应该开始在网络级别上寻找解决方案-使用我的硬件(Wi-Fi路由器)或ISP。

有人知道这里发生了什么吗?

Fet*_*rij 7

我遇到了同样的问题,这个问题可能来自您的互联网连接,我通过将dockerd 中的并发上传(下载获取)减少到 1来解决它 。通过使用这些参数:

--max-concurrent-downloads  (default: 3)    Set the max concurrent downloads for each pull

--max-concurrent-uploads    (default: 5)    Set the max concurrent uploads for each push
Run Code Online (Sandbox Code Playgroud)

如果带宽较低,同时上传 5 张图片可能会导致超时。

https://docs.docker.com/engine/reference/commandline/dockerd/

  • 就我而言,是我的 VPN 连接阻止了我 (3认同)