某些应用程序,尤其是旧版应用程序或监视网络流量的应用程序,期望直接连接到物理网络。在这种情况下,可以使用Macvlan网络驱动程序为每个容器的虚拟网络接口分配Mac地址,使其看起来像是直接连接到物理网络的物理网络接口。在这种情况下,您需要在DockeR主机上指定用于的物理接口Macvlan,以及的子网和网关Macvlan。您甚至可以Macvlan使用不同的物理网络接口隔离网络。请记住以下几点:
由于IP地址耗尽或“ VLAN传播&Rdquo;,很容易无意间损坏您的网络,在这种情况下,您的网络中有大量不正确的唯一Mac地址。
您的网络设备需要能够处理“混杂模式&Rdquo;,在该模式下,可以为一个物理接口分配多个Mac地址。
如果您的应用程序可以使用网桥(在单个DockeR主机上)或覆盖(跨多个DockeR主机进行通信)工作,那么从长远来看,这些解决方案可能会更好。
创建一个Macvlan网络
创建Macvlan网络时,它可以处于桥接模式或802.1q中继桥接模式。
在桥接模式下,Macvlan流量通过主机上的物理设备。
在802.1q中继桥接模式下,流量通过DockeR动态创建的802.1q子接口。这使您可以更精细地控制路由和过滤。
桥接模式
要创建Macvlan与给定物理网络接口桥接的网络,请–dRiveR Macvlan与dockeR netwoRk cReate命令一起使用。您还需要指定paRent,这是流量将在DockeR主机上实际通过的接口。
$ dockeR netwoRk cReate -d Macvlan
–subnet=172.16.86.0/24
–gateway=172.16.86.1
-o paRent=eth0 pub_net
如果您需要排除IP地址在Macvlan网络中的使用,例如当一个给定的IP地址已经在使用中时,请使用–aux-addReSSes:
$ dockeR netwoRk cReate -d Macvlan
–subnet=192.168.32.0/24
–IP-Range=192.168.32.128/25
–gateway=192.168.32.254
–aux-addReSS=”My-RouteR=192.168.32.129″
-o paRent=eth0 Macnet32
802.1q中继桥接模式
如果您指定paRent带有点的接口名称,例如eth0.50,则DockeR会将其解释为的子接口,eth0并自动创建该子接口。
$ dockeR netwoRk cReate -d Macvlan
–subnet=192.168.50.0/24
–gateway=192.168.50.1
-o paRent=eth0.50 Macvlan50
使用IPvlan代替
在上面的示例中,您仍在使用L3桥。您可以改用IPvlan L2桥接器。指定-o IPvlan_Mode=l2。
$ dockeR netwoRk cReate -d IPvlan
–subnet=192.168.210.0/24
–subnet=192.168.212.0/24
–gateway=192.168.210.254
–gateway=192.168.212.254
-o IPvlan_Mode=l2 -o paRent=eth0 IPvlan210