Windows 服务器核心 Docker 容器网络问题
Windows Server Core Docker Containers networking problem
我有 2 个容器是通过 docker 创建的,具有以下设置:
docker-compose.yml 文件:
version: "3.7"
services:
web:
image: img_web
container_name: cont_web
svcs:
image: img_svcs
container_name: cont_svcs
depends_on:
- web
img_web 的 Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
img_svcs 的 Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
在 docker-compose up -d
之后,从 cont_svcs 容器,我能够:
通过 IP
Ping cont_web
Ping cont_web 按主机名(容器 ID:bf4001be1e84
自动生成。)
但是我无法通过别名 (web) cont_web 容器
我检查了两个容器,我可以在网络部分看到以下内容:
"Networks": {
"test_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"bf4001be1e84",
"web"
],
...
两个容器都连接到 'test_default' 驱动程序。
注意:即使我无法通过机器本身的 "web" 别名来 ping 网络机器。
非常感谢您的帮助和反馈。
谢谢
山姆
尝试添加显式 NAT 网络以用于您的部署。
为此,请在 docker-撰写文件-
的末尾添加以下内容
networks:
default:
external:
name: nat
现在,尝试使用服务名称 ping 服务。
如果这不起作用,可能是您的本地机器上安装了安全防火墙或 Internet Security 应用程序,这很可能阻止了 dockerd.exe DNS服务。尝试实施一些规则以允许有关基于 docker 的服务的 TCP 和 UDP 端口。
您也可以尝试此解决方法来正确解析 DNS-https://github.com/docker/for-win/issues/1976#issuecomment-418151244
那是因为 Netbios 解析适用于主名称。您可以尝试通过注册表添加第二个 Netbios 名称:https://www.techrepublic.com/blog/the-enterprise-cloud/adding-multiple-netbios-names-for-windows-servers/
或者我建议在 DNS 中创建第二个 Cname 记录并使用静态名称进行解析(您的 docker 容器可能无法接受)
我有 2 个容器是通过 docker 创建的,具有以下设置:
docker-compose.yml 文件:
version: "3.7"
services:
web:
image: img_web
container_name: cont_web
svcs:
image: img_svcs
container_name: cont_svcs
depends_on:
- web
img_web 的 Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
img_svcs 的 Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
在 docker-compose up -d
之后,从 cont_svcs 容器,我能够:
通过 IP
Ping cont_web
Ping cont_web 按主机名(容器 ID:bf4001be1e84 自动生成。)
但是我无法通过别名 (web) cont_web 容器
我检查了两个容器,我可以在网络部分看到以下内容:
"Networks": {
"test_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"bf4001be1e84",
"web"
],
...
两个容器都连接到 'test_default' 驱动程序。
注意:即使我无法通过机器本身的 "web" 别名来 ping 网络机器。
非常感谢您的帮助和反馈。
谢谢 山姆
尝试添加显式 NAT 网络以用于您的部署。 为此,请在 docker-撰写文件-
的末尾添加以下内容networks:
default:
external:
name: nat
现在,尝试使用服务名称 ping 服务。
如果这不起作用,可能是您的本地机器上安装了安全防火墙或 Internet Security 应用程序,这很可能阻止了 dockerd.exe DNS服务。尝试实施一些规则以允许有关基于 docker 的服务的 TCP 和 UDP 端口。
您也可以尝试此解决方法来正确解析 DNS-https://github.com/docker/for-win/issues/1976#issuecomment-418151244
那是因为 Netbios 解析适用于主名称。您可以尝试通过注册表添加第二个 Netbios 名称:https://www.techrepublic.com/blog/the-enterprise-cloud/adding-multiple-netbios-names-for-windows-servers/
或者我建议在 DNS 中创建第二个 Cname 记录并使用静态名称进行解析(您的 docker 容器可能无法接受)