Docker Swarm 覆盖网络 - 容器无法通信

Docker Swarm overlay network - containers can’t communicate

Tl;dr: Docker 使用覆盖网络的 swarm 容器无法互相 ping 通

我正在尝试创建一个 swarm,其中包括我的桌面(Windows 和 Docker 桌面)和一个 Ubuntu 虚拟机(Swarm 管理器,在我的台式电脑上)。

创建群并加入群工作正常。我着手创建一个可附加的覆盖网络,它应该使用覆盖驱动程序跨越我的所有节点。我创建了一个随机的 nginx 服务,使用全局模式和我的覆盖网络使网络在我的所有节点上都可用。

为了测试连通性,我创建了两个 ubuntu 容器(一个在 Ubuntu 上,一个在我的 Windows 上)并将它们加入网络。问题是容器无法 ping eachother.I 也在我的 Windows 和 Ubuntu 虚拟机上打开了 swarm 所需的端口(2376、2377、7946、4789)。

Docker Linux 的版本:

Version: 19.03.6 API version: 1.40 Go version: go1.12.16

Docker Windows 的版本:

Version: 19.03.5 API version: 1.40 Go version: go1.12.12

你知道我如何建立连接吗?

发现你的问题,因为我处于类似的情况。

文档指出覆盖网络默认情况下是加密的,您不应尝试将 Windows 个节点附加到加密网络:

Do not attach Windows nodes to encrypted overlay networks.

Overlay network encryption is not supported on Windows. If a Windows node attempts to connect to an encrypted overlay network, no error is detected but the node cannot communicate.

https://docs.docker.com/network/overlay/#encrypt-traffic-on-an-overlay-network