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

时间:2019-08-07 06:45:47

标签: docker networking docker-swarm

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

我在aws主机之一上创建了一个群集网络。每个其他节点都可以加入该群集网络。

但是,当我在不在aws上的任何节点上运行docker run -it --name alpine2 --network test-net alpine时,都会出现错误: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上有一些节点,而其他节点则没有?

我打开了所有计算机上群联网所需的端口。

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

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

3 个答案:

答案 0 :(得分:1)

检查以下端口是否在两台计算机上均已打开。

  • TCP 端口2377
  • TCP UDP 端口7946
  • UDP 端口4789

您可以使用ufw允许端口:

ufw allow 2377/tcp

答案 1 :(得分:0)

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

docker node inspect --format {{.Spec.Availability}} node

如果是,则更新状态:

docker node update --availability active node

这是解释:

  

决议

     

当节点处于耗尽状态时,应该采取的预期行为   无法分配群集模式资源,例如多主机   将网络IP地址覆盖到该节点上。   当前在群首之间提供消息传递机制,其中   IP地址管理发回到请求的工作节点   IP地址。因此,泊坞窗运行失败,超过了上下文截止日期。   内部工程问题升级/ 292已打开,可提供   将来的Docker守护程序版本中出现了更好的错误消息。

source

答案 2 :(得分:0)

我遇到了类似的问题,通过确保节点的 ENGINE VERSION 相同,设法解决了这个问题。

sudo docker node ls