【问题标题】:Unable to get Docker Swarm on Windows Server 2019 ingress network working between containers无法在容器之间工作的 Windows Server 2019 入口网络上获取 Docker Swarm
【发布时间】:2020-09-30 22:05:14
【问题描述】:

我发现一些帖子提到了在 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 外部站点。我已经测试了 ping 8.8.8.8,但它在覆盖网络上运行时不起作用,因为我得到的 Request timed out 与我尝试在 testnet 网络上 ping 我的 web 容器时相同。

docker service create -d --network testnet --name pingweb mcr.microsoft.com/windows/nanoserver:1809 ping 8.8.8.8

问题:

  1. 这是一个已知问题吗?
  2. 我怎样才能让它工作?

参考文献:

https://docs.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 客户强烈要求与 Linux 服务发布选项保持一致。在 Windows Server 1709 中使用入口模式添加对服务发布的支持可以使用 Docker 的路由网格,允许外部端点通过 swarm 中的任何节点访问服务,而不管哪些节点正在为服务运行任务。

这些网络改进还解锁了在使用覆盖网络时基于 VIP 的服务发现,因此 Windows 用户不受 DNS 轮询的限制。

查看 Microsoft 虚拟化博客上的相应帖子,了解改进的详细信息。

【问题讨论】:

    标签: docker networking docker-swarm windows-server-2019 docker-ingress


    【解决方案1】:

    经过大量的努力,发现修复是作为 Windows Server 2019 更新的一部分提供的KB4580390

    关于这个问题的 Github 线程: https://github.com/moby/moby/issues/40998#issuecomment-719889423

    更新修复问题: https://www.catalog.update.microsoft.com/Search.aspx?q=KB4580390

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      相关资源
      最近更新 更多