除了overlay,docker还开发了另一个支持跨主机容器网络的 driver :macvlan
macvlan 本身是linux kernel模块,其功能是允许在同一物理网卡上配置多个mac地址,即多个interface,每个interface可以配置自己的IP,。macvlan本质上是一种网卡虚拟化技术,docker用macvlan实现容器网络就不奇怪了
macvlan的最大优点是性能好,相比其他实现,macvlan不需要创建linux bridge,而是直接通过以太interface连接到物理网络。
准备实验环境
1、在docker host上开启混杂模式,执行 ip link set ethx promisc on
root@host1:~#
ip link show ens192
3: ens192: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:50:56:87:22:32 brd ff:ff:ff:ff:ff:ff
root@host1:~#
ip link set ens192 promisc on
root@host1:~#
ip link show ens192
3: ens192: <BROADCAST,MULTICAST,
PROMISC> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:50:56:87:22:32 brd ff:ff:ff:ff:ff:ff
root@host2:~#
ip link show ens192
3: ens192: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:50:56:87:1b:c0 brd ff:ff:ff:ff:ff:ff
root@host2:~#
ip link set ens192 promisc on
root@host2:~#
ip link show ens192
3: ens192: <BROADCAST,MULTICAST,
PROMISC> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:50:56:87:1b:c0 brd ff:ff:ff:ff:ff:ff
2、如果是虚机还需在虚机的网卡配置选项中开启混杂模式
VirtualBox设置如下:
![](https://i-blog.csdnimg.cn/blog_migrate/cb88229a807676305fa0c65f9b4013cb.png)
Esxi设置如下:
![](https://i-blog.csdnimg.cn/blog_migrate/370a9cf593f1163b8de90037b5a14385.png)
当前实验环境如下
![](https://i-blog.csdnimg.cn/blog_migrate/215cf5cd4eac61026de3791a29aeca31.png)