准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)

时间:2024-09-10 00:07:50

除了 overlay,docker 还开发了另一个支持跨主机容器网络的 driver:macvlan。

macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。macvlan 本质上是一种网卡虚拟化技术,Docker 用 macvlan 实现容器网络就不奇怪了。

macvlan 的最大优点是性能极好,相比其他实现,macvlan 不需要创建 Linux bridge,而是直接通过以太 interface 连接到物理网络。下面我们就来创建一个 macvlan 网络。

准备实验环境

我们会使用 host1 和 host2 上单独的网卡 enp0s9 创建 macvlan。为保证多个 MAC 地址的网络包都可以从 enp0s9 通过,我们需要打开网卡的混杂模式。

ip link set enp0s9 promisc on

确保 enp0s9 状态 UP 并且 promisc 模式已经生效。

准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)

因为 host1 和 host2 是 VirtualBox 虚拟机,还需要在网卡配置选项页中设置混杂模式。

准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)

当前实验环境如图所示:

准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)

准备就绪,下一节我们创建 macvlan 网络。

准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)