Macvlan 网络驱动程序
某些应用程序,尤其是遗留应用程序或监控
网络流量,期望直接连接到物理网络。在
在这种情况下,您可以使用macvlan
用于分配 MAC 的网络驱动程序
地址添加到每个容器的虚拟网络接口中,使其看起来是
直接连接到物理网络的物理网络接口。在这个
的情况下,您需要在 Docker 主机上指定一个物理接口以用于
Macvlan,以及网络的子网和网关。您甚至可以
使用不同的物理网络接口隔离 Macvlan 网络。
请记住以下事项:
由于 IP 地址,您可能会无意中降低您的网络质量 耗尽或“VLAN 分布”,这种情况发生在您有 网络中的唯一 MAC 地址数量过多。
您的网络设备需要能够处理 “混杂模式”, 其中,可以为一个物理接口分配多个 MAC 地址。
如果您的应用程序可以使用网桥(在单个 Docker 主机上)或 overlay(用于跨多个 Docker 主机进行通信),这些解决方案可能是 从长远来看更好。
选项
下表描述了可以传递给--option
使用macvlan
司机。
选择 | 违约 | 描述 |
---|---|---|
macvlan_mode | bridge | 设置 Macvlan 模式。可以是以下之一:bridge ,vepa ,passthru ,private |
parent | 指定要使用的父接口。 |
创建 Macvlan 网络
创建 Macvlan 网络时,它可以处于桥接模式或 802.1Q Trunk Bridge 模式。
在桥接模式下,Macvlan 流量通过主机上的物理设备。
在 802.1Q 中继桥模式量通过 802.1Q 子接口 Docker 动态创建。这允许您控制路由和 在更精细的级别进行筛选。
桥接模式
要创建macvlan
network (与给定的物理网络桥接)
接口,使用--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
network 等
当给定的 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
interface 名称,其中包含一个点,例如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 而不是 Macvlan
在上面的示例中,您仍在使用 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
使用 IPv6
如果您已将 Docker 守护程序配置为允许 IPv6,则
您可以使用双栈 IPv4/IPv6macvlan
网络。
$ docker network create -d macvlan \
--subnet=192.168.216.0/24 --subnet=192.168.218.0/24 \
--gateway=192.168.216.1 --gateway=192.168.218.1 \
--subnet=2001:db8:abc8::/64 --gateway=2001:db8:abc8::10 \
-o parent=eth0.218 \
-o macvlan_mode=bridge macvlan216
后续步骤
在 Macvlan 联网教程中了解如何使用 Macvlan 驱动程序。