我现在遇到了docker-machine的问题,之前它工作正常,因为它在Digital Ocean上运行docker的机器上的命令超时。
我可以SSH的机器罚款和Docker群体和我们的系统似乎在机器上运行(泊坞窗节点命令似乎工作正常,例如docker节点LS)。
这个问题似乎只是docker机。 过去我有类似的情况,可以通过增加暂停来解决问题,但是现在这并没有帮助。
该错误似乎是由networking/ http HTLS握手超时作为输出:
docker机ls – 超时30
说明:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Stopped Unknown dev-m0 - digitalocean Error Unknown Get https://api.digitalocean.com/v2/droplets/42100174: net/http: TLS handshake timeout dev-w1 - digitalocean Error Unknown Get https://api.digitalocean.com/v2/droplets/42115817: net/http: TLS handshake timeout ... repeated for all managers and workers.
我在我的Mac上运行Docker CE 17.05.0-ce-rc1-mac8 Edge,在Digital Ocean上运行Linux上的17.03.0-ce(这似乎是最新的版本)。 我已经在Mac和Edge之间进行了交换,看看是否导致问题,但没有帮助。
我已经重新启动机器(停止和启动)。 我没有重新生成证书,因为我可以通过docker-machine ssh dev-m1进入机器而没有问题,所以看起来证书似乎不是问题。 我不想在本地运行任何容器。
这一切在过去一直很好,但最近刚刚停止。
任何帮助或build议最赞赏。
谢谢,阿什利。
我的猜测是Docker客户端VM中的时间与数字海洋服务器不同步,导致TLS握手失败。 尝试通过在mac上运行此命令来同步时钟:
$ docker run --rm --privileged alpine hwclock -s
该命令将使用hwclock命令将VM内的时钟设置为Mac上的时钟。 它需要特权访问,因为容器需要从主机硬件读取时间。
您的Mac上的docker客户端在瘦虚拟机内部运行。 虚拟机时钟的时间可能与您的Mac上的时间以及外部世界的时间不同步,特别是当您在允许睡眠的笔记本电脑上使用泊坞窗时。 那个时间去同步可能会导致任何需要知道docker服务器(VM内部)事件发生的时间,并将其与Docker服务器之外发生的事件进行比较的操作。 我怀疑数字海洋的TLS握手就是这样一个操作。
码头事件遇到问题,不像我预期的那样。 在Docker版本库问题部分( moby / moby#25579 )中的一个很长的线程之后,我们发现时钟去同步是原因。