我发现一些帖子提到了在 Windows Server 2019 上使用覆盖网络支持路由网格(在下面的参考资料中)。
经过大量故障排除后,我无法在使用以下网络和服务创建的用户定义覆盖网络上正确配置 2 个简单容器:
docker network create -d overlay --attachable testnet
docker service create -d --name web --network testnet --publish 80:80 microsoft/iis
docker service create -d --network testnet --name pingweb mcr.microsoft.com/windows/nanoserver:1809 ping web
在端口 80 上浏览我的 docker 主机时,我能够访问 iis 网站,但是当我的其他容器位于同一个覆盖网络上时,它们pingweb
无法 ping 我的主容器。web
PS C:\Users\me> docker network ls
NETWORK ID NAME DRIVER SCOPE
ga8egf2nwsir ingress overlay swarm
bf164fa77349 nat nat local
81fb626259e1 none null local
l9p7c8p2fy3g testnet overlay swarm
PS C:\Users\me> docker service create -d --name web --network testnet --publish 80:80 microsoft/iis
mk3r1a7za4jk21321kmzlddxr
PS C:\Users\me> docker service create -d --network testnet --name pingweb mcr.microsoft.com/windows/nanoserver:1809 ping web
j3z0xso7shghctva3od9qct10
PS C:\Users\me> docker service logs pingweb
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 |
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Pinging web [10.0.29.180] with 32 bytes of data:
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Request timed out.
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Request timed out.
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Request timed out.
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Request timed out.
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 |
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Ping statistics for 10.0.29.180:
pingweb.1.wbtpizulcxvg@WS2019DockerNode1 | Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
PS C:\Users\me>
我还注意到,每当我的 pingweb 容器在覆盖网络上时,我都无法 ping 外部站点。我已经测试过 pinging 8.8.8.8
,但是在覆盖网络上运行时它不起作用,因为我得到的结果与Request timed out
尝试在网络上 ping 我的web
容器时相同testnet
。
docker service create -d --network testnet --name pingweb mcr.microsoft.com/windows/nanoserver:1809 ping 8.8.8.8
问题):
- 这是一个已知的问题?
- 我怎样才能让它工作?
参考:
https://www.docker.com/blog/docker-windows-server-1709/
Windows 上的 Docker 入口模式服务发布
Windows 客户强烈要求与 Linux 服务发布选项保持一致。在 Windows Server 1709 中使用入口模式添加对服务发布的支持可以使用 Docker 的路由网格,允许外部端点通过 swarm 中的任何节点访问服务,而不管哪些节点正在为服务运行任务。
这些网络改进还解锁了使用覆盖网络时基于 VIP 的服务发现,因此 Windows 用户不限于 DNS 循环。
查看 Microsoft 虚拟化博客上的相应帖子,了解有关改进的详细信息。