尝试从Docker容器中访问本地网络上的计算机时遇到一个奇怪的问题。根据互联网上的一些帖子,我在码头工人的daemon.json
文件中添加了一个dns条目(由ipconfig找到的默认网关)。
当我运行一个简单的容器时,我可以ping google.com
并可以通过其主机名(例如server1
轻松ping通我的主机。但是奇怪的是,我无法ping通同一网络上的其他任何计算机:例如server2
,server3
等
我确保可以从容器外部访问所有计算机,并且可以从容器内部通过其IP地址访问计算机,但主机也可以通过主机名访问。在我的Docker容器的/etc/resolv.conf
中,我可以看到名称服务器条目指向我在daemon.json
中的DNS条目。
更新:此外,相同的设置有时会起作用,有时甚至不起作用,即在一段时间后尝试后,我可以使docker容器通过主机名访问本地网络上的机器。现在,对此感到困惑的人可以解释一下或在Windows的docker桌面中遇到了相同的问题。以下是docker-desktop的版本
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false