为了让用户应用平滑地迁徙至容器,比如一些传统应用大概监控应用需要直接使用Host的物理网络,也为了保障网络管理的同等性与网络性能的高效,我们选用了Macvlan网络模式。Macvlan本身是linxu kernel的模块,本质上是一种网卡假造化技能。其原理是在宿主机物理网卡上假造出多个子网卡,并分配独立的 IP 地址和 MAC 地址,把子网卡分配给容器实例来实实际例与物理网络的直通,并同时保持容器实例的隔离性。Host 收到数据包后,则根据差异的 MAC 地址把数据包从转发给差异的子接口。在网络上看起来容器直接连接到物理网络,和物理机和虚机没有区别。Macvlan共有4种模式,我们使用的是高性能的Macvlan Bridge,如下图所示: