来自守护进程的错误响应:连接到网络失败,请确保您的网络选项正确并检查管理器日志:超出上下文截止时间

Swa*_*dey 5 networking docker docker-swarm

我正在尝试使用覆盖网络设置 docker swarm。我在 aws 上有一些主机,而其他是运行 Ubuntu 的笔记本电脑(与在 aws 上相同)。每个节点都有一个静态公共 IP。我创建了一个覆盖网络: docker network create --driver=overlay --attachable test-net

我在其中一台 aws 主机上创建了一个群网络。每个其他节点都能够加入该群网络。

但是,当我docker run -it --name alpine2 --network test-net alpine在非 aws 的任何节点上运行时,出现错误:docker: Error response from daemon: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded.

但是,如果我在任何 aws 主机上运行相同的程序,则一切正常。如果 aws 上有一些节点而其他节点没有,我还需要在网络/端口方面做些什么吗?

我已经在所有机器上打开了 swarm 网络所需的端口。

编辑:在管理器节点中列出时,所有节点都被标记为“活动”。

更新通过打开相应的端口解决了这个问题。如果所有节点都基于 Linux,它现在可以工作。但是,当我尝试将管理器作为 Linux(ubuntu) os 与管理器建立群时,mac os 机器无法加入群。

Lin*_*nPy 4

检查节点是否处于耗尽状态:

docker node inspect --format {{.Spec.Availability}} node
Run Code Online (Sandbox Code Playgroud)

如果是,则更新状态:

docker node update --availability active node
Run Code Online (Sandbox Code Playgroud)

这是解释:

解决

当节点处于耗尽状态时,您应该无法向该节点分配 swarm 模式资源(例如多主机覆盖网络 IP 地址)。但是,swarm 模式当前不提供 swarm 之间的消息传递机制领导者,其中 IP 地址管理发生回请求 IP 地址的工作节点。因此 docker run 失败,并且超出了上下文截止日期。内部工程问题升级/292 已开放,以便在 Docker 守护程序的未来版本中提供更好的错误消息。

来源