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

Docker Swarm - Network Overlay not connecting all containers

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

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

在 运行 docker network inspect mynet 之后,只列出了我的两个容器(同一主机上的 nginx 和一个节点实例),而其他两个未列出,即使他们有来自 docker inspect.

的覆盖网络的名称和 IP

想法是使用 nginx reverse proxy to add any new containers that come online to it's config, but am stuck on getting containers to all connect. According to the Docker networking docs for overlay 这应该是可能的。

我做错了什么?谢谢。

编辑:

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

原来有两个问题导致了我的问题。

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