对于一些带有nslookup的docker映像(例如,我将使用tutum/dnsutils),如果我尝试使用以下命令:
docker run -it --rm tutum/dnsutils nslookup smtp.office365.com
它返回:
Server: 172.25.32.1
Address: 172.25.32.1#53
Non-authoritative answer:
smtp.office365.com canonical name = outlook.office365.com.
outlook.office365.com canonical name = outlook.ha.office365.com.
outlook.ha.office365.com canonical name = outlook.ms-acdc.office.com.
outlook.ms-acdc.office.com canonical name = ITM-efz.ms-acdc.office.com.
Name: ITM-efz.ms-acdc.office.com
Address: 40.99.9.18
...
然后,我通过运行docker network create testnet
创建一个网络,并尝试以下命令:
docker run -it --rm --net testnet tutum/dnsutils nslookup smtp.office365.com
它返回:
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
*** Can't find smtp.office365.com: No answer
为什么会有这样的差别呢?
如果我在主机outlook.office365.com
上尝试这些命令,两个命令都返回相同的结果,即解析后的ip地址。
我在WSL中使用Docker的以下版本:
$docker version
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.18.7
Git commit: baeda1f
Built: Tue Oct 25 18:01:58 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.7
Git commit: 3056208
Built: Tue Oct 25 17:59:49 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.12
GitCommit: a05d175400b1145e5e6a735a6710579d181e7fb0
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
1条答案
按热度按时间aiqt4smr1#
这是网桥网络的默认行为:
默认情况下,来自连接到默认网桥网络的container的流量不会转发到外部世界。
请参考此处的正式文档启用转发。