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

Docker 来自守护程序的错误响应:连接到网络失败,请确保网络选项正确,并检查管理器日志:超过上下文截止日期,docker,networking,docker-swarm,Docker,Networking,Docker Swarm,我正试图建立一个覆盖网络docker swarm。我在aws上有一些主机,而另一些是运行Ubuntu的笔记本电脑(与aws上的相同)。每个节点都有一个静态公共IP。我创建了一个覆盖网络,如下所示: docker网络创建--驱动程序=覆盖--可连接测试网络 我在一台aws主机上创建了一个swarm网络。其他每个节点都可以加入该群集网络 但是,当我在任何不在aws上的节点上运行docker run-it--name alpine2--network test net alpine时,我会得到错误:d

我正试图建立一个覆盖网络docker swarm。我在aws上有一些主机,而另一些是运行Ubuntu的笔记本电脑(与aws上的相同)。每个节点都有一个静态公共IP。我创建了一个覆盖网络,如下所示:
docker网络创建--驱动程序=覆盖--可连接测试网络

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

但是,当我在任何不在aws上的节点上运行
docker run-it--name alpine2--network test net alpine
时,我会得到错误:
docker:error-response-from daemon:attaching to network failed,请确保您的网络选项正确,并检查管理器日志:上下文截止日期已超过。

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

我已在所有机器上打开swarm联网所需的端口

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


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

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

docker node inspect --format {{.Spec.Availability}} node
如果是,则更新状态:

docker node update --availability active node
解释如下:

决议

当节点处于漏极状态时,您应该 无法分配群集模式资源,如多主机 将网络IP地址覆盖到节点。但是,swarm模式不会 目前在swarm leader之间提供消息传递机制 IP地址管理返回到请求的工作节点 IP地址。因此docker运行失败,超过了上下文截止日期。 内部工程问题上报/292已打开,以提供 在Docker守护进程的未来版本中提供更好的错误消息


检查两台机器上是否都打开了以下端口

  • TCP端口
    2377
  • TCPUDP端口
    7946
  • UDP端口
    4789
您可以使用
ufw
来允许端口:

ufw允许2377/tcp

我遇到了一个类似的问题,通过确保节点的引擎版本相同,我成功地解决了这个问题

sudo docker node ls

@SwapnilPandey您说过您在打开端口后解决了此问题。但是,如果端口已打开,Docker仍显示此错误,我可以做些什么吗?顺便说一句,我的设置与你的类似。@angheladrian这两台机器都在同一个子网中吗?我未能将两台机器连接到两个不同的子网上,因此放弃了使用docker swarm的想法。@SwapnilPandey如果一个节点在Digital Ocean上,另一个在GCP上怎么办?:)要测试您是否需要这些功能,例如在CentOS上暂时禁用防火墙和selinux。systemctl停止防火墙D;set0;如果您可以使用docker创建容器,那么请重新启用firewazll和selinux并打开端口,并添加所需的异常。