Ash*_*ken 6 linux docker digital-ocean docker-swarm docker-machine
我现在遇到了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.
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
该命令将使用hwclock命令将 VM 内的时钟设置为 Mac 上的时钟。它需要特权访问,因为容器需要从主机硬件读取时间。
Mac 上的 docker 客户端正在瘦虚拟机内运行。虚拟机中的时钟计时可能与 Mac 上的时间以及外界的时间不同步,尤其是当您在允许睡眠的笔记本电脑上使用 docker 时。时间不同步可能会导致任何需要了解 docker 服务器(虚拟机内部)上发生事件的时间并将其与 docker 服务器外部发生的事件进行比较的操作出现问题。我怀疑 TLS 与数字海洋的握手就是这样的操作之一。
我遇到了 docker 事件的行为不符合我预期的问题。在 docker 存储库的问题部分 ( moby/moby#25579 ) 中进行了很长的讨论后,我们发现时钟不同步是原因。
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |