macvlan模式下容器与宿主机无法通信,可以在宿主机上建立一个macvlan链接,这样就可以通过宿主机上的macvlan与容器内部的macvlan进行连接,从而解决了宿主机与macvlan容器之间不能通讯的问题。
以下操作都在宿主机上运行,假设容器IP为192.168.1.34:
# 以下操作都在宿主机上运行,新增一个叫macvlan0(不要和容器的macvlan重名)的macvlan接口
ip link add macvlan0 link ovs_bond0 type macvlan mode bridge
# 为该接口分配ip 192.168.1.250
ip addr add 192.168.1.250 dev macvlan0
#启用新建网络
ip link set macvlan0 up
# 增加路由表,使宿主机到容器(容器IP:192.168.1.34)的通信全部经由宿主机的macvlan0进行
ip route add 192.168.1.34 dev macvlan0
完成这些配置后,宿主机和容器就可以直接通信了,还有一点需要注意的是,重启后自己创建的macvlan接口会消失,解决方法是把上述命令都写到了rc.local内或计划任务内。