以下是创建支持 IPv6 的 Docker macvlan 网络的完整命令及关键配置要点:
基础命令模板
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
--ipv6 \
--subnet=240e:1a2b:3c4d::/64 \
--gateway=240e:1a2b:3c4d::1 \
-o parent=eth0 \
my_macvlan_network
核心参数详解
- IPv4 配置
--subnet=192.168.1.0/24
:需与宿主机同一局域网段(示例为 192.168.1.x)--gateway=192.168.1.1
:网关地址通常为主路由 IP
- IPv6 配置
--ipv6
:启用 IPv6 支持--subnet=240e:1a2b:3c4d::/64
:建议使用运营商分配的 /64 公网 IPv6 前缀,可通过ifconfig
查看宿主机 IPv6 地址前缀--gateway=240e:1a2b:3c4d::1
:网关地址通常为 IPv6 前缀的首地址(::1)
- 物理接口设置
-o parent=eth0
:指定物理网卡名称(通过ifconfig
或ip a
确认实际接口名)
关键操作步骤
- 启用物理接口混杂模式
sudo ip link set eth0 promisc
- 创建网络后验证
docker network ls docker network inspect my_macvlan_network
- 容器启动示例
docker run -d --name=my_container \ --network=my_macvlan_network \ --ip=192.168.1.100 \ --ip6=240e:1a2b:3c4d::100 \ nginx:latest
高级注意事项
- IPv6 地址获取逻辑
- 若使用无状态地址分配(SLAAC),容器将自动获取公网 IPv6 地址
- 静态指定 IPv6 地址时需确保在子网范围内
- 宿主机与容器通信
- 默认宿主机无法直接访问 macvlan 网络容器
- 解决方案:创建辅助 macvlan 接口或使用独立物理网卡
- 网络稳定性优化
- 避免使用
bridge
模式,优先选择private
或vepa
模式减少广播风暴风险
- 避免使用
故障排查
- 内核模块检查
lsmod | grep macvlan
- 接口状态验证
ip -d link show eth0
建议根据实际网络环境调整子网和网关参数,并通过 journalctl -u docker
查看详细错误日志。
总结
docker network create -d macvlan --subnet=192.168.1.0/24 --gatway=192.168.1.1 --ipv6 --subnet=f80::/32 -o parent=eth0 macnet