我尝试遵循此guide来创建绑定到物理网络的容器。
docker network create -d macvlan \
--subnet=192.168.20.0/24 \
--gateway=192.168.20.1 \
-o parent=wlp2s0.10 \
my-8021q-macvlan-net
wlp2s0(3)是我的wifi适配器(我设置了混杂模式),(9)是docker创建的接口:
3: wlp2s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether f8:59:71:a8:dc:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.20.203/24 brd 192.168.20.255 scope global dynamic noprefixroute wlp2s0
valid_lft 38479sec preferred_lft 38479sec
inet6 fdf7:22bd:f37a::444/128 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fdf7:22bd:f37a:0:289c:3eb2:c675:7b75/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::5b1b:d3fe:259d:44b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
9: wlp2s0.10@wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether f8:59:71:a8:dc:1b brd ff:ff:ff:ff:ff:ff
inet6 fe80::fa59:71ff:fea8:dc1b/64 scope link
valid_lft forever preferred_lft forever
现在我已经创建了一个容器
docker run --rm -it \
--network my-8021q-macvlan-net \
--name alpine \
alpine:latest \
sh
在容器内,显示以下界面:
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
13: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:c0:a8:14:02 brd ff:ff:ff:ff:ff:ff
inet 192.168.20.2/24 brd 192.168.20.255 scope global eth0
valid_lft forever preferred_lft forever
我想知道容器在哪里获得其IP,因为网络路由器上没有显示DHCP租约。
我尝试了一个简单的ping google.com
,它导致一个ping: bad address 'google.com'
因此,我用Wireshark捕获了接口(9)上的流量。
我现在没主意了...