linux – Docker-Machine命令超时TLS握手但Dock Swarmer工作正常

我现在遇到了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)中的一个长线程之后,我们发现时钟去同步是原因.

相关文章

文章浏览阅读8.8k次,点赞2次,收藏7次。本文介绍Docker Com...
文章浏览阅读1.5w次,点赞7次,收藏76次。原网提供的教程需要...
文章浏览阅读940次,点赞20次,收藏20次。通过 docker run 命...
文章浏览阅读1k次,点赞20次,收藏20次。Podman 是一个开源的...
文章浏览阅读2.1k次。请注意,这些命令需要在 Docker 主机上...
文章浏览阅读1.1k次,点赞37次,收藏40次。nacos搭建集群连接...