使用 macvlan 驱动创建的 docker 容器无法与宿主机直接通信。
通过添加另一个 macvlan 网卡可解。

环境说明

宿主机: 10.0.1.80
容器:10.0.1.2
虚拟 IP(做路由实现通信):10.0.1.8
宿主机物理网卡名称:enp2s0

使用方法

ip link add macvlan-proxy link enp2s0 type macvlan mode bridge
ip addr add 10.0.1.8/32 dev macvlan-proxy
ip link set macvlan-proxy up
ip route add 10.0.1.2/32 dev macvlan-proxy

验证

  • 使用 ifconfig 查看是否有 macvlan-proxy 的网卡出现。
  • 使用 route -n 查看是否有相关路由出现
    • 10.0.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 macvlan-proxy
  • 使用 ping 直接测试