我的docker的macvlan设置有什么问题?
我正在学习“与macvlandocker” 。 以下是我的设置:
G
192.168.1.1,网关(物理)
W
192.168.1.2,windows 10,以太网卡(物理)
V
192.168.1.5,virtualbox + centos7,桥接networking
c1
192.168.1.10, macnet
中的macnet
容器
c2
192.168.1.11, macnet
中的macnet
容器
macnet
是由…创build的
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp0s3 macnet
c1
和c2
是由…创build的
docker run -it --net=macnet --ip=192.168.1.10 -h=c1 anapsix/alpine-java bash
docker run -it --net=macnet --ip=192.168.1.11 -h=c2 anapsix/alpine-java bash
docker版本是17.06.0-ce
我期待所有下面的工作,但只有第一个作品( ->
意思ping ):
c1
< – > c2
OK
c1
< – > V
失败
c1
< – > W
失败
c1
– > G
失败
上面的步骤有什么问题吗?
顺便说一下,有人可以帮助创build标签“macvlan”和“ipvlan”?
这是一个预期的行为,因为您使用macvlan创build的networking在您的VM和macvlan网桥之间没有任何连接(默认是桥接模式下的docker create macvlan network)。 您创buildC1和C2的容器将其接口连接到macvlan桥。 这就是为什么C1和C2能够互相ping通,但是从VM(客户端)你不能ping通C1和C2,因此不能ping通主机。
从虚拟机连接到容器C1和C2,创build一个桥接types的接口并分配一个IP。 命令可能有副作用,你可能完全不能连接到你的虚拟机,如果你通过ssh连接,确保你有2个接口到你的虚拟机,ssh到虚拟机没有接口有ip在networking192.168.1.0/ 24)
- 删除networking192.168.1.0/24中有ip的接口的ip
- ip addr delete(ip_of_interface)dev(接口eg-eth0)
- ip链接添加mymacvlan1链接(VM接口名称,例如 – eth0)typesmacvlan模式桥
- ip链接设置mymacvlan1了
- ip addr add 192.168.1.20/24 dev mymacvlan1
- ping你的容器 – ping(C1 ip)-I mymacvlan1
请注意这些更改不会引导持久性
为了能够从主机ping通,需要确保虚拟机虚拟机networking设置中虚拟机接口具有混杂模式true。
我有和你一样的设置。 我的意思是一个VBox和两个运行在Ubuntu之上的容器。 我不知道你是否有特定的目的,或只是testingdockernetworking。 如果是后者,那么为什么不使用桥梁作为驱动。 下面的命令为我创build了一个networking:
docker network create -d bridge -o parent=enp0s3 skynet
然后,我创build了两个容器。
~$ docker run -itd --net=skynet --name container2 myimage bash ~$ docker run -itd --net=skynet --name container1 myimage bash
并检查两个容器可以互相ping通以及本地主机和外部networking(如google.com或yahoo.com)。
让我知道这是否有帮助。
注意:您的查询没有任何错误的设置。 如果驱动程序是macvlan,则预计您无法触及容器。