我现在遇到了docker-machine的麻烦,以前工作正常,因为在Digital Ocean中运行docker的机器上的命令超时.
我可以SSH到机器和Docker Swarm,我们的系统似乎在机器上正常运行(docker node命令似乎工作正常,例如docker node ls).
这个问题似乎与docker机器有关.我过去有类似的东西,可以通过增加超时来修复,但现在这没有用.
该错误似乎是由net / http HTLS握手超时引起的输出:
docker-machine ls –timeout 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和Stable之间进行了交换,看看是否会导致问题,但它没有帮助.
我重新启动了机器(停止并启动).我没有重新生成证书,因为我可以使用docker-machine ssh dev-m1 SSH连接到没有问题的机器,所以看起来证书对我来说似乎不是问题.我不是想在本地运行任何容器.
这一切在过去一直很好,但最近刚刚停止.
任何帮助或建议最受赞赏.
谢谢,
阿什利.
我的猜测是,docker客户端虚拟机内部的时间与数字远洋服务器不同步,导致TLS握手失败.尝试通过在mac上运行此命令来同步时钟:
$docker run --rm --privileged alpine hwclock -s
该命令将使用hwclock命令将VM内的时钟设置为mac上的时钟.它需要特权访问,因为容器需要从主机硬件读取时间.
说明
Mac上的docker客户端在瘦VM中运行. VM中时钟的时间可能与Mac上的时间和外部世界的时间不同步,特别是如果您在允许睡眠的笔记本电脑上使用docker.那个时间去同步会导致任何需要知道docker服务器(VM内部)发生事件的时间的操作出现问题,并将其与docker服务器外发生的事件进行比较.我怀疑与数字海洋的TLS握手就是这样一种操作.
我遇到了码头工事件不符合我预期的问题.在docker存储库的问题部分(moby/moby#25579)中的一个长线程之后,我们发现时钟去同步是原因.