使用docker我的macvlan设置有什么问题?

时间:2017-08-02 04:44:57

标签: docker networking vlan

我正在研究"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

c1c2由作者创建 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”吗?

2 个答案:

答案 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)

  1. 删除网络192.168.1.0/24
  2. 中具有ip的接口的ip
  3. ip addr delete(ip_of_interface)dev(interface eg-eth0)
  4. ip link add mymacvlan1 link(VM接口名称,例如。-eth0)类型macvlan mode bridge
  5. ip link set mymacvlan1 up
  6. ip addr add 192.168.1.20/24 dev mymacvlan1
  7. ping你的容器 - ping(C1 ip)-I mymacvlan1
  8. 请注意这些更改不是启动持续

    要从主机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,则预计您无法访问容器。