Windows Server Core Docker Containers网络问题



我有两个通过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容器,我能够:

  1. 通过IP Ping cont_web

  2. 按主机名Ping cont_web(容器id:bf4001be1e84自动生成。(

我无法通过cont_web容器的别名(web( Ping

我检查了两个集装箱,我可以在网络部分看到以下内容:

"Networks": {
"test_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"bf4001be1e84",
"web"
],
...

两个容器都连接到"test_default"驱动程序。

注意:即使我也无法通过机器内部的"web"别名来ping网络机器

我非常感谢您的帮助和反馈。

谢谢Sam

这是因为Netbios解析适用于主要名称。您可以尝试通过注册表添加第二个Netbios名称:https://www.techrepublic.com/blog/the-enterprise-cloud/adding-multiple-netbios-names-for-windows-servers/

或者,我建议在DNS中创建第二个Cname记录,并使用静态名称进行解析(对于您的docker容器可能不可接受(

尝试添加一个显式NAT网络用于部署。要做到这一点,请在docker撰写文件的末尾添加以下内容-

networks:
default:
external:
name: nat

现在,尝试使用服务名称ping服务。

如果不起作用,您的本地计算机中可能安装了安全防火墙或Internet安全应用程序,该应用程序很可能正在阻止dockerd.exeDNS服务。尝试实现一些规则,以允许TCP和UDP端口使用基于docker的服务。

您也可以尝试此解决方法来正确解析DNS-https://github.com/docker/for-win/issues/1976#issuecomment-4181511244

最新更新