一、macvlan介绍
macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址而实现虚拟多块网卡,即多个 interface,每个 interface 可以配置自己的IP。macvlan 本质上是一种网卡虚拟化技术。
macvlan 的最大优点是性能极好,相比其他实现,macvlan不需要创建Linux bridge,而是直接通过以太interface连接到物理网络。
二、准备实验环境
使用hosts1 和 hosts2上单独的网卡ens33 创建macvlan。
1、为保证多个 MAC 地址的网络包都可以从 ens33 通过,我们需要打开物理网卡的混杂模式:
ip link set ens33 promisc on
或者
ens33 开启混杂模式ifconfig ens33 promisc
ens33 关闭混杂模式ifconfig ens33 -promisc
2、macvlan 是 Linux 内核提供的一种网络驱动类型。如果内核没有加载 macvlan,可以通过命令加载:
modprobe macvlan # 加载macvlan;可用于判断系统是否支持macvlan;若要卸载 macvlan:modprobe -r macvlan
lsmod | grep macvlan # 确认是否已加载
如果第一个命令报错,或者第二个命令没有返回,说明当前系统不支持 macvlan,需要升级内核。
三、相同 macvlan 网络之间的通信

1、首先使用 docker network create 分别在两台主机上创建两个 macvlan 网络:
sudo docker network create --driver macvlan --subnet 172.16.10.0/24 --gateway 172.16.10.1 -o parent=ens33 macvlan_10 # 为了简单设置的网络与宿主机的网络为同一网段
-
--driver:指定 Docker 网络 driver;
-
--subnet:macvlan网络是local网络,为了保证跨主机能够通信,用户需要自己管理 IP subnet;
-
--gateway 与其他网络不同,docker不会为macvlan 创建网关,这里的网关应该是真实存在的,否则容器无法路由。
-
-o parent 指定用来分配 macvlan 网络的物理网卡
docker network ls查看创建的macvlan网络:
2、在两台宿主机上分别增加一个容器
macvlan网络详解

最低0.47元/天 解锁文章
389

被折叠的 条评论
为什么被折叠?



