我有一个在OSX主机上运行的虚拟机,其静态IP为192.168.7.11
。当我在主机上的终端中时,可以ping通此IP:
$ ping 192.168.7.11
PING 192.168.7.11 (192.168.7.11): 56 data bytes
64 bytes from 192.168.7.11: icmp_seq=0 ttl=64 time=0.226 ms
64 bytes from 192.168.7.11: icmp_seq=1 ttl=64 time=0.240 ms
64 bytes from 192.168.7.11: icmp_seq=2 ttl=64 time=0.317 ms
64 bytes from 192.168.7.11: icmp_seq=3 ttl=64 time=0.271 ms
64 bytes from 192.168.7.11: icmp_seq=4 ttl=64 time=0.167 ms
^C
--- 192.168.7.11 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.167/0.244/0.317/0.050 ms
但是,当我尝试从docker容器执行相同的操作时,它是无法访问的-即使我传入了--network=host
(在没有此参数的情况下,行为也是相同的)。
$ docker run -it --network=host --rm busybox ping -w5 192.168.7.11
PING 192.168.7.11 (192.168.7.11): 56 data bytes
--- 192.168.7.11 ping statistics ---
6 packets transmitted, 0 packets received, 100% packet loss
相同的行为适用于我尝试过的任何其他Docker容器。我的网络知识非常有限,但是我的理解是--network=host
将使容器可以访问主机所具有的相同路由规则。此外,截至昨天为止,即使--network=host
部分的 都没有问题。我不知道发生了什么变化。
这是在主机上运行时ifconfig
的输出。请注意,vboxnet0
界面位于输出的底部。
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.94.0.2 netmask 0xff000000
inet 127.94.0.1 netmask 0xff000000
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
VHC128: flags=0<> mtu 0
XHC1: flags=0<> mtu 0
XHC0: flags=0<> mtu 0
XHC20: flags=0<> mtu 0
en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=4<VLAN_MTU>
ether 00:e1:11:00:17:1e
nd6 options=201<PERFORMNUD,DAD>
media: autoselect (none)
status: inactive
en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether ac:de:48:00:11:22
inet6 fe80::aede:48ff:fe00:1122%en5 prefixlen 64 scopeid 0x9
nd6 options=201<PERFORMNUD,DAD>
media: autoselect (100baseTX <full-duplex>)
status: active
ap1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 3a:f9:d3:bf:c6:a8
media: autoselect
status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 38:f9:d3:bf:c6:a8
inet6 fe80::14bf:f655:5dac:30d6%en0 prefixlen 64 secured scopeid 0xb
inet 172.16.254.191 netmask 0xffffff00 broadcast 172.16.254.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
ether 0a:f9:d3:bf:c6:a8
media: autoselect
status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
ether 16:e0:af:30:cf:c6
inet6 fe80::14e0:afff:fe30:cfc6%awdl0 prefixlen 64 scopeid 0xd
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether a6:00:14:e9:f7:01
media: autoselect <full-duplex>
status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether a6:00:14:e9:f7:00
media: autoselect <full-duplex>
status: inactive
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether a6:00:14:e9:f7:05
media: autoselect <full-duplex>
status: inactive
en4: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether a6:00:14:e9:f7:04
media: autoselect <full-duplex>
status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether a6:00:14:e9:f7:01
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: en1 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 14 priority 0 path cost 0
member: en2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 15 priority 0 path cost 0
member: en3 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 16 priority 0 path cost 0
member: en4 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 17 priority 0 path cost 0
nd6 options=201<PERFORMNUD,DAD>
media: <unknown type>
status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
inet6 fe80::88e0:be8e:e5ad:bf16%utun0 prefixlen 64 scopeid 0x13
nd6 options=201<PERFORMNUD,DAD>
vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.7.1 netmask 0xffffff00 broadcast 192.168.7.255
以及在docker容器上运行时的输出:
br-2be4bd2496f3 Link encap:Ethernet HWaddr 02:42:E2:0C:F1:D3
inet addr:192.168.0.1 Bcast:192.168.15.255 Mask:255.255.240.0
inet6 addr: fe80::42:e2ff:fe0c:f1d3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:47 errors:0 dropped:0 overruns:0 frame:0
TX packets:98 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1928 (1.8 KiB) TX bytes:6814 (6.6 KiB)
docker0 Link encap:Ethernet HWaddr 02:42:60:CF:C8:6A
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:60ff:fecf:c86a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:70 errors:0 dropped:0 overruns:0 frame:0
TX packets:107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4204 (4.1 KiB) TX bytes:122986 (120.1 KiB)
eth0 Link encap:Ethernet HWaddr 02:50:00:00:00:01
inet addr:192.168.65.3 Bcast:192.168.65.255 Mask:255.255.255.0
inet6 addr: fe80::50:ff:fe00:1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:493 errors:0 dropped:0 overruns:0 frame:0
TX packets:466 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:156422 (152.7 KiB) TX bytes:35178 (34.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:82 errors:0 dropped:0 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:9100 (8.8 KiB) TX bytes:9100 (8.8 KiB)
veth1263733 Link encap:Ethernet HWaddr CE:F5:AA:21:88:01
inet6 addr: fe80::ccf5:aaff:fe21:8801/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:70 errors:0 dropped:0 overruns:0 frame:0
TX packets:108 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5184 (5.0 KiB) TX bytes:123056 (120.1 KiB)
veth7eeb381 Link encap:Ethernet HWaddr 1A:3F:BD:BC:E7:0E
inet6 addr: fe80::183f:bdff:febc:e70e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:47 errors:0 dropped:0 overruns:0 frame:0
TX packets:113 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2586 (2.5 KiB) TX bytes:7952 (7.7 KiB)
vethaf189b5 Link encap:Ethernet HWaddr A6:A7:67:82:C3:05
inet6 addr: fe80::a4a7:67ff:fe82:c305/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:119 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:5930 (5.7 KiB)
vethc9b1f8b Link encap:Ethernet HWaddr 92:40:76:7C:76:58
inet6 addr: fe80::9040:76ff:fe7c:7658/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1898 (1.8 KiB)
非常感谢您的帮助!