Docker Swarm - 网络覆盖未连接所有容器

Dus*_*tin 5 networking amazon-ec2 docker docker-swarm

我目前使用 Docker Swarm 和 Consul 设置了 3 个 EC2 实例。我有 3 个简单的节点应用程序分布在所有 3 个实例中,然后使用 nginx 在我的 swarm master 上进行路由。

使用覆盖网络指南,我创建了一个名为 的新覆盖层mynet,并将每个容器连接到该网络。使用docker inspect我可以确认每个节点容器和 nginx 容器都已连接到mynet并具有 IP。但是,在 sshing 到我的 nginx 容器后,它只能通过网络与位于同一主机上的节点应用程序进行通信,而不能与集群中其他主机上的节点应用程序进行通信。

运行后docker network inspect mynet,仅列出了我的两个容器(同一主机上的 nginx 和一个节点实例),而其他两个则未列出,即使它们具有来自 的覆盖网络的名称和 IP docker inspect

这个想法是使用nginx 反向代理将任何上线的新容器添加到其配置中,但我坚持让容器进行所有连接。根据Overlay 的 Docker 网络文档,这应该是可能的。

我究竟做错了什么?谢谢。

编辑:

在发送docker network inspect mynet几次垃圾邮件后,即使我出于测试目的关闭了所有防火墙并打开了所有端口,容器似乎仍在不断连接和断开网络连接。什么会导致这样的事情发生?

Dus*_*tin 3

事实证明有两个问题导致了我的问题。

一是我使用的是docker network overlay不支持的内核 3.13。升级到 3.16 解决了该问题。其次,Swarm 1.0.1 中存在一个无法正确聚合网络信息的错误。它已在这里修复,但截至撰写本文时尚未发布。