Docker网络相当于虚拟机桥接网络模式

Docker网络相当于虚拟机桥接网络模式

我想在一个可以通过自己的链路层设备/MAC 地址访问的网络中部署一个 Docker 容器,相当于一个带有桥接模式网络适配器的虚拟机。

具体来说,我希望通过这种网络安排同时具有到公共互联网的路由和私有 LAN 主机 ping 功能;我目前可以使用虚拟机实现这一点。

Docker 文档描述了一种合适的 macvlan 网络驱动程序类型,但我无法在 Docker 中获得上述所需的功能。

我可以从主机 ping IP 10.177.202.7,但在容器内无法 ping。以下是来自我的主机和容器的命令和输出(为简洁起见进行了编辑):

# get required subnet detail
ip a s wlp4s0
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:cc:f8:66:a3:42 brd ff:ff:ff:ff:ff:ff
    inet 10.177.202.159/24 brd 10.177.202.255 scope global dynamic noprefixroute wlp4s0
       valid_lft 2371sec preferred_lft 2371sec

# get gateway
ip r 
default via 10.177.202.1 dev wlp4s0 proto dhcp metric 600

# using the subnet and gateway info to create Docker macvlan
sudo docker network create -d macvlan --subnet='10.177.202.0/24' --gateway='10.177.202.1' -o parent='wlp4s0' macvlan_test
sudo docker run --network macvlan_test -it ubuntu bash

# 
# within container from here
#

root@d98d8b305ec7:/data# ip a s
191: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:0a:b1:ca:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.177.202.2/24 brd 10.177.202.255 scope global eth0
       valid_lft forever preferred_lft forever
root@d98d8b305ec7:/data# ping 10.177.202.7
PING 10.177.202.7 (10.177.202.7) 56(84) bytes of data.
^C
--- 10.177.202.7 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2041ms
root@c212f3c26858:/data# ip r
default via 10.177.202.1 dev eth0 
10.177.202.0/24 dev eth0 proto kernel scope link src 10.177.202.2 

如果您对我所遗漏的内容有任何想法,我将不胜感激。

相关内容