我的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

c1c2是由…创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)

  1. 删除networking192.168.1.0/24中有ip的接口的ip
  2. ip addr delete(ip_of_interface)dev(接口eg-eth0)
  3. ip链接添加mymacvlan1链接(VM接口名称,例如 – eth0)typesmacvlan模式桥
  4. ip链接设置mymacvlan1了
  5. ip addr add 192.168.1.20/24 dev mymacvlan1
  6. 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,则预计您无法触及容器。