Docker 网络之 ipvlan 和 macvlan

本文详细比较了Docker中的ipvlan和macvlan网络模式,强调了ipvlanL2和L3模式的区别,以及macvlan对混杂模式的要求,并提供了创建和测试实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker ipvlan 和 macvlan

Docker networks explained - part 2: docker-compose, microservices, chaos  monkey | Accesto Blog

 

引言

本文讲解了Docker 网络模式中的 ipvlan 和 macvlan 的区别,目前自己在生产环境中使用的 ipvlan 模式非常问题.也解决了实际业务问题.

IPvlan L2 mode example

ipvlan 无需网卡混杂模式 , 运行如下命令后可以生成一个 vlan 子接口 , 会和主网卡共享 mac 地址

创建ipvlan 网络

docker network create -d ipvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0.10 ipvlan10

注: 就算有 DHCP 也必须指定 subnet 和 gateway , 不然默认会分配成 172.的地址.

-o ipvlan_mode= Defaults to L2 mode if not specifie

运行容器

docker run -it --rm --net=ipvlan124 networkstatic/iperf3 -c 10.0.0.200

IPvlan L3 mode example

关键点: IPvlan L3 模式会丢弃所有广播和多播流量。

不要求gateway 参数, 3 层默认互通 , 不要求 parent 接口

看下面例子就懂了

Create the IPvlan L3 network
 docker network  create  -d ipvlan \
    --subnet=192.168.214.0/24 \
    --subnet=10.1.214.0/24 \
     -o ipvlan_mode=l3 ipnet210
 Test 192.168.214.0/24 connectivity
 docker run --net=ipnet210 --ip=192.168.214.10 -itd alpine /bin/sh
 docker run --net=ipnet210 --ip=10.1.214.10 -itd alpine /bin/sh
 Test L3 connectivity from 10.1.214.0/24 to 192.168.212.0/24
 docker run --net=ipnet210 --ip=192.168.214.9 -it --rm alpine ping -c 2 10.1.214.10
 Test L3 connectivity from 192.168.212.0/24 to 10.1.214.0/24
 docker run --net=ipnet210 --ip=10.1.214.9 -it --rm alpine ping -c 2 192.168.214.10

Inside an L3 mode container

$ docker exec 36bbb711cb0d  ip route
default dev eth0 scope link
192.168.214.0/24 dev eth0 scope link  src 192.168.214.10

$ docker exec 0aff00099717 ip route
default dev eth0 scope link
10.1.214.0/24 dev eth0 scope link  src 10.1.214.10

Dual stack IPv4 IPv6 IPvlan L2 mode

Create a v6 network
 docker network create -d ipvlan \
    --ipv6 --subnet=2001:db8:abc2::/64 --gateway=2001:db8:abc2::22 \
    -o parent=eth0.139 v6ipvlan139
 Start a container on the network
 docker run --net=v6ipvlan139 -it --rm alpine /bin/sh

Macvlan

macvlan 需要注意的点

  1. 网卡必须支持混杂模式
  1. 如果您的应用程序可以使用 bridge(在单个 Docker 主机上)或覆盖(跨多个 Docker 主机进行通信)工作,那么从长远来看,这些解决方案可能会更好。

Refer

IPvlan network driver | Docker Documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白的杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值