Docker push-net / http:TLS握手超时
我已经在AWS EC2 Ubuntu 14.04实例上部署了私有Docker镜像registry。 registry使用Let's Encrypt证书进行保护。
不幸的是,我得到了超过300s的docker push
操作的net/http: TLS handshake timeout
:
这是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
regsitry:2
容器的日志不会显示任何错误 – 除了通知在接收数据时出现意外的EOF。 我也可以推送less于5分钟的图像推挤没有问题。
我怀疑这是一个责怪的系统设置,因为超时发生总是一旦操作超过300秒。 没有任何负载平衡器或其他代理。 <my-registry-domain:5000>
直接指向服务器IP。
我怎样才能进一步调查和可能的补救措施?
编辑
当我将图像推送到其他服务器提供商(DigitalOcean),AWS ECSregistry或甚至Docker Hub时也是如此! 我发现很难相信Docker客户端会有一个300秒的内置握手超时。
我在想,也许我应该开始寻找在networking层面的解决scheme – 用我的硬件(Wi-Fi路由器)或我的ISP。
有人知道这里发生了什么?
我得到了同样的问题,这个问题可能是从您的互联网连接,我解决了递减并发上传(获得下载)1docker
--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
同时上传5张图片可能会导致超时;)
https://docs.docker.com/engine/reference/commandline/dockerd/