我有一个在 win server 2016 上运行的 windows docker 容器
容器中运行的站点可以从网络上的其他节点访问。
容器可以访问互联网(它可以访问网络外部的第 3 方节点),但无法连接到网络中的其他节点。
当容器中运行的应用程序尝试访问网络中另一台机器上的服务 (machine_name) 时,它会收到以下错误:The remote name could not be resolved: machine_name当应用程序尝试连接到网络上的数据库时:A network-related or instance-specific error occurred while establishing a connection所以看起来容器没有访问权限或在内网上找不到机器
我运行 docker exec -ti e87633560c6c ipconfig /all 并得到以下结果:

Windows IP Configuration

   Host Name . . . . . . . . . . . . : gmsa_acct
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter vEthernet (Container NIC 0b35fe9f):

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2
   Physical Address. . . . . . . . . : 00-15-5D-30-F4-1D
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::7939:903e:141f:5c98%24(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.22.223.136(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.22.208.1
   DNS Servers . . . . . . . . . . . : 172.22.208.1
                                       10.xxx
                                       10.xxx
   NetBIOS over Tcpip. . . . . . . . : Disabled

我在容器运行的机器上运行了这个命令
docker exec e87633560c6c nltest /sc_verify:mydomain.com
Flags: b0 HAS_IP  HAS_TIMESERV
Trusted DC Name \\D1dns01.mydomain.com
Trusted DC Connection Status Status = 0 0x0 NERR_Success
Trust Verification Status = 0 0x0 NERR_Success
The command completed successfully
奇怪的是,同一个容器在另一台主机上运行没有任何问题。我们现在正在尝试在新主机上运行它并遇到上述问题。
任何帮助表示赞赏。
谢谢。
编辑:我能够通过 IP 地址而不是机器名称进行连接。
如何通过机器名称连接?

最佳答案

当 Docker 为其运行的容器创建网络时,默认情况下它会创建一个 bridge 类型的 NATed 网络。您可以使用命令 docker network ls 更详细地了解容器网络,结果如下所示:

NETWORK ID          NAME                DRIVER              SCOPE
17e324f45964        bridge              bridge              local
6ed54d316334        host                host                local
7092879f2cc8        none                null                local
您可以尝试使用“主机”网络配置:

Use host networking

关于Docker 容器可以访问互联网但不能访问本地网络,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64142811/

10-16 17:46