Docker macvlan网络与宿主机通讯
图片引用自:macvlan模式容器与宿主机通信
默认情况下各个macvlan之间可以通讯,但是不能与宿主机进行通讯!! 出现这种情况的原因是为了安全而禁止互通,如宿主机ping容器的ip,尽管他们属于同一网段,但是也是ping不通的,反过来也是。
解决方案:
可以在宿主机上建立一个macvlan链接,这样就可以通过宿主机上的macvlan与容器内部的macvlan进行连接,从而解决了宿主机与macvlan容器之间不能通讯的问题。
创建容器macvlan示例:
#!/bin/bash
docker network create -d macvlan \ --subnet=192.168.123.0/24(你的网络子网号) \ --gateway=192.168.123.1(你的网关) \ -o parent=ovs_eth0(你的父网卡) \ macvlan(新的网络名称)
docker network create -d macvlan --ipv6 \ --subnet=192.168.123.0/24 --gateway=192.168.123.1 \ --subnet=240e::/60 --gateway=240e::1 \ -o parent=ovs_eth0 \ -o macvlan_mode=bridge \ macvlan(新的网络名称) ——————————————————————————————————————————————————-————————————————————
docker run -d \ --name=xxxx \ --network macvlan(你的macvlan网络名称) \ --ip=192.168.0.39(指定macvlan ip地址) \ --dns=192.168.0.29(指定容器dns) \ --restart=always \ --name=movie-robot \ ......其他docker运行参数 _________________________________________________________________________
ip link add macvlan2(一个网络名称) link ovs_eth0(你的物理网卡) type macvlan mode bridge
ip addr add 192.168.123.240 dev macvlan2 ip link set macvlan2 up @增加路由表 ip route add 目的ip(需要建立通讯的macvlan容器 ip) dev macvlan(刚宿主机建立的macvlan) ————————————————————————————————设置完毕————————————————————————————————————
|