我不确定这是否是当前版本的 Windows Docker 网络的问题,或者我的配置不佳和误解,但我有以下设置:
- 2 个 Docker 容器(使用 Microsoft/ASP.NET 映像作为基础构建)在每个容器中运行一个 .NET MVC 应用程序。
- 1 个运行 SQL 服务器的 Docker 容器(使用 Microsoft/mssql-server-windows 映像构建)
当我创建所有 3 个容器时,一切正常,我可以使用它们的名称附加和 ping 所有其他容器,而不会出现任何问题。应用程序运行并可以如我所愿地相互通信。
但是,当我重新启动机器并再次启动所有容器时,它们无法再使用它们的名称相互 ping/通信(使用 IP 地址很好)。
我已经在默认 NAT 网络上尝试过,还尝试用我自己的自定义 NAT 网络替换 NAT 网络。
为了解决这个问题,我必须为每个容器运行 force network disconnect 命令,如下所示:
docker network disconnect nat <containername> --force
然后我必须在启动它们之前将每个容器重新连接到网络。然后,所有容器都可以使用它们的名称和 IP 地址相互 ping/通信。
仅供参考,这是一个开发环境,但我希望使用 Windows Server 2016 VM 在 Azure 中做类似的事情,虽然我不太清楚现场生产的最佳网络配置是什么,因为我需要有多个应用程序(在单独的容器)在通过它们自己的子域访问的同一节点上。
任何帮助或指导都会很棒。