Skip to main content

IPVLAN

网络环境

  • 物理网卡:enp2s0
  • VLAN ID:101
  • IP 网段:192.168.101.0/24
  • 网关:192.168.101.1(交换机 IP)
  • Docker 网络名称:netipvlan

目标

  • 容器直接接入交换机的 VLAN 101,使用真实 IP 通信
  • 容器与物理网络中的设备可直接互通
# 1. 创建 VLAN 子接口(如果系统未自动配置)
ip link add link enp2s0 name enp2s0.101 type vlan id 101
ip link set enp2s0.101 up

# 2. 创建 IPvlan L2 模式网络(二层透传)
docker network create \
  -d ipvlan \
  --subnet=192.168.101.0/24 \
  --gateway=192.168.101.1 \
  -o ipvlan_mode=l2 \
  -o parent=enp2s0.101 \
  netipvlan

# 3. 验证网络创建
docker network inspect netipvlan

# 4. 创建容器并连接到该网络
docker run -itd --network=netipvlan --name=test alpine sh

配置说明:

  1. VLAN 子接口:通过 ip link 创建 VLAN 101 子接口,绑定到物理网卡
  2. IPvlan 模式:使用 l2 模式(二层桥接),容器直接参与局域网通信
  3. 网关设置:容器默认网关指向交换机 IP 192.168.101.1
  4. 网络隔离:所有容器通过 VLAN 101 与外部通信,实现网络隔离

使用注意事项:

  1. 宿主机不会为该网络分配 IP,仅作为转发桥梁
  2. 容器需手动指定 IP,可在启动容器时添加 –ip 参数

验证测试:

# 查看容器 IP
docker exec test ip addr show eth0

# 测试网络连通性
docker exec test ping 192.168.101.1