除了 overlay,docker 还开发了另外一个支持跨主机容器网络的 driver:macvlan。docker
macvlan 自己是 linxu kernel 模块,其功能是容许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每一个 interface 能够配置本身的 IP。macvlan 本质上是一种网卡虚拟化技术,Docker 用 macvlan 实现容器网络就不奇怪了。网络
macvlan 的最大优势是性能极好,相比其余实现,macvlan 不须要建立 Linux bridge,而是直接经过以太 interface 链接到物理网络。下面咱们就来建立一个 macvlan 网络。性能
咱们会使用 host1 和 host2 上单独的网卡 enp0s9 建立 macvlan。为保证多个 MAC 地址的网络包均可以从 enp0s9 经过,咱们须要打开网卡的混杂模式。spa
ip link set enp0s9 promisc onip
确保 enp0s9 状态 UP 而且 promisc 模式已经生效。开发
由于 host1 和 host2 是 VirtualBox 虚拟机,还须要在网卡配置选项页中设置混杂模式。虚拟机
当前实验环境如图所示:容器
准备就绪,下一节咱们建立 macvlan 网络。配置