互联网技术 / 互联网资讯 · 2023年12月28日

Docker核心技术解析:macvlan网络使用指南

某些应用程序,尤其是旧版应用程序或监视网络流量的应用程序,期望直接连接到物理网络。在这种情况下,可以使用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

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册