1

我不确定这是否是当前版本的 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 中做类似的事情,虽然我不太清楚现场生产的最佳网络配置是什么,因为我需要有多个应用程序(在单独的容器)在通过它们自己的子域访问的同一节点上。

任何帮助或指导都会很棒。

4

1 回答 1

0

我不确定,部分原因是在我遇到任何其他示例之前几个月就提出了这个问题,但这听起来与https://github.com/docker/for-win/issues中描述的问题非常相似/1038

基本上,Windows 10 的 1709 更新似乎存在一个问题,导致 Hyper-V 网络无法按应有的方式工作。

似乎有两种解决此问题的常见方法:在控制面板 => 电源选项 => 系统设置中关闭“快速启动”,或者在启动后重新启动 Docker for Windows 和任何容器。我还以为我在 Microsoft 博客文章中看到了一些内容,表明根本问题现已解决,并将包含在 Windows 10 的更新中,但遗憾的是,我无法再找到该信息或问题所在的特定版本号(理论上)解决了。很可能是延迟的 1803 年“春季创作者更新”版本。

于 2018-04-18T13:57:57.063 回答