除了 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 網絡。配置