我正在研究"docker with macvlan"。以下是我的设置:
G
192.168.1.1,网关(物理)
W
192.168.1.2,windows 10,ether-net card(physical)
V
192.168.1.5,virtualbox + centos7,桥接网络
c1
192.168.1.10,macnet
中的泊坞窗容器
c2
192.168.1.11,macnet
macnet
由作者创建
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp0s3 macnet
c1
和c2
由作者创建
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 version是17.06.0-ce
我期待以下所有工作,但只有第一部作品(->
表示 ping ):
c1
< - > c2
好的
c1
< - > V
失败
c1
< - > W
失败
c1
- > G
失败
上述步骤有什么问题吗?
顺便说一下,有人可以帮忙创建标签“macvlan”和“ipvlan”吗?
答案 0 :(得分:2)
这是一种预期的行为,因为您使用macvlan创建的网络在您的VM和macvlan网桥之间没有任何连接(默认情况下,docker在网桥模式下创建macvlan网络)。您创建C1和C2的容器的接口连接到macvlan桥。这就是为什么C1和C2能够相互ping通,但是从VM(guest)你无法ping C1和C2,因此无法ping主机。
从VM连接到容器C1和C2,创建一个bridge类型的接口并分配一个ip。下面的命令:(这些命令可能有副作用。你可能完全失去与VM的连接。如果你通过ssh连接,确保你有2个接口到你的VM和ssh到VM没有接口有ip在网络192.168.1.0/ 24)
请注意这些更改不是启动持续
要从主机ping,您需要确保虚拟机VM网络设置中VM接口具有混杂模式为真。
答案 1 :(得分:0)
我和你有相同的设置。我的意思是一个VBox和两个运行在Ubuntu之上的容器。我不知道你是否有特定的目的或只测试码头网络。如果是后者,那么为什么不使用 bridge 作为驱动程序。 下面的命令为我创建了一个网络:
docker network create -d bridge -o parent=enp0s3 skynet
然后我创建了两个容器。
~$ docker run -itd --net=skynet --name container2 myimage bash
~$ docker run -itd --net=skynet --name container1 myimage bash
并检查两个容器可以互相ping通以及本地主机和外部网络(如google.com或yahoo.com)。
Lemme知道这是否有任何帮助。
N.B:对于您的查询,您的设置没有任何问题。如果驱动程序是macvlan,则预计您无法访问容器。