Windows Server Core Docker 容器网络问题

3
我有通过Docker Compose创建的两个容器,具有以下设置:
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
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot
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. 通过主机名(容器ID:bf4001be1e84 autogenerated)ping通cont_web

但是,我无法通过别名(web)ping通cont_web容器。
我检查了这两个容器,在网络部分看到了以下内容:
"Networks": {
            "test_default": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": [
                    "bf4001be1e84",
                    "web"
                ],
...

两个容器都连接到“test_default”驱动程序。
注意:即使在机器本身内部,我也无法通过其“web”别名名称ping通Web服务器。
我非常感慨您的帮助和反馈。
谢谢 Sam
2个回答

1
尝试添加一个明确的NAT网络来用于部署。要实现这一点,请在您的docker-compose文件末尾添加以下内容-
networks:
  default:
    external:
      name: nat

现在,请尝试使用服务名称对服务进行ping操作。
如果这样仍然无法工作,则可能是您的本地计算机安装了安全防火墙或互联网安全应用程序,最有可能是阻止了dockerd.exe DNS服务。尝试实施一些规则以允许基于docker的服务相关的TCP和UDP端口。
此外,您可以尝试以下解决方法以正确解析DNS- https://github.com/docker/for-win/issues/1976#issuecomment-418151244

1

非常感谢您的回答,您的意思是设置CONTAINER的Netbios名称,“OptionalName”是主机地址吗? - Sameh
是的,Sameh,那就是我想说的。当你只使用主机名进行ping时,它就是Netbios解析在起作用。这就是你需要找到解析的地方。 - Shahid Roofi Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接