首页 > 解决方案 > Docker Swarm覆盖网络 - 容器无法通信

问题描述

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

我正在尝试创建一个群,其中包括我的桌面(带有 Docker 桌面的 Windows)和一个 Ubuntu VM(群管理器,在我的台式电脑上)。

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

为了测试连接性,我创建了两个 ubuntu 容器(一个在 Ubuntu 上,一个在我的 Windows 上)并将它们加入网络。问题是容器无法互相 ping。我还在我的 Windows 和 Ubuntu VM 上打开了 swarm 所需的端口(2376、2377、7946、4789)。

适用于 Linux 的 Docker 版本:

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

适用于 Windows 的 Docker 版本:

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

你知道我怎样才能使连接工作吗?

标签: linuxwindowsdockernetworkingdocker-swarm

解决方案


发现你的问题,因为我在类似的情况下。

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

不要将 Windows 节点附加到加密的覆盖网络。

Windows 不支持覆盖网络加密。如果 Windows 节点尝试连接到加密覆盖网络,则不会检测到错误但节点无法通信。

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


推荐阅读