我发现一些帖子提到了在WindowsServer2019上使用覆盖网络路由网格的支持(在下面的参考文献中(。
经过大量的故障排除,我无法在使用以下网络和服务创建的用户定义的覆盖网络上正确配置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:Usersme> 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:Usersme> docker service create -d --name web --network testnet --publish 80:80 microsoft/iis
mk3r1a7za4jk21321kmzlddxr
PS C:Usersme> docker service create -d --network testnet --name pingweb mcr.microsoft.com/windows/nanoserver:1809 ping web
j3z0xso7shghctva3od9qct10
PS C:Usersme> 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:Usersme>
我还注意到,每当我的pingweb容器在覆盖网络上时,我就无法对外部网站进行ping。我已经测试了ping8.8.8.8
,但在覆盖网络上运行时它不起作用,因为我得到的Request timed out
与我尝试在testnet
网络上pingweb
容器时相同。
docker service create -d --network testnet --name pingweb mcr.microsoft.com/windows/nanoserver:1809 ping 8.8.8.8
问题:
- 这是已知问题吗
- 我怎样才能让它发挥作用
参考文献:
https://learn.microsoft.com/en-us/virtualization/community/team-blog/2017/20170926-docker-s-routing-mesh-available-with-windows-server-version-1709
https://www.docker.com/blog/docker-windows-server-1709/
Docker入口模式服务在Windows上发布
Windows客户对Parity with Linux服务发布选项提出了很高的要求。在Windows Server 1709中添加对使用入口模式发布服务的支持,可以使用Docker的路由网格,允许外部端点通过群中的任何节点访问服务,无论哪些节点正在为服务运行任务。
当使用覆盖网络时,这些网络改进还解锁了基于VIP的服务发现,这样Windows用户就不局限于DNS循环。
有关改进的详细信息,请查看Microsoft虚拟化博客上的相应帖子。
经过多次努力,发现该修复程序是作为Windows Server 2019更新的一部分提供的KB4580390
Github线程围绕这个问题:https://github.com/moby/moby/issues/40998#issuecomment-719889423
更新修复问题:https://www.catalog.update.microsoft.com/Search.aspx?q=KB4580390