【问题标题】:What's wrong with my macvlan settings with docker?我的 docker 的 macvlan 设置有什么问题?
【发布时间】:2018-01-09 03:16:48
【问题描述】:

我正在学习"docker with macvlan"。以下是我的设置:

G 192.168.1.1, 网关(物理)
W 192.168.1.2, windows 10, 以太网卡(物理)
V 192.168.1.5, virtualbox+centos7, 桥接网络
c1 192.168.1.10,macnet 中的 docker 容器
c2 192.168.1.11,macnet 中的 docker 容器

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 版本是 17.06.0-ce

我期待下面的所有工作,但只有第一个工作(-> 表示 ping):
c1 c2 OK
c1 V 失败
c1 W 失败
c1 --> G 失败

以上步骤有什么问题吗?

顺便问一下,有人可以帮忙创建标签“macvlan”和“ipvlan”吗?

【问题讨论】:

    标签: docker networking vlan


    【解决方案1】:

    我的设置和你一样。我的意思是一个 VBox 和两个在 Ubuntu 上运行的容器。我不知道您是否有特定目的或只是测试 docker 网络。如果是后者,那为什么不使用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)。

    让我知道这是否有帮助。

    注意:根据您的查询,您的设置没有问题。如果驱动程序是 macvlan,则预计您无法伸出容器。

    【讨论】:

    • syknet 与默认网络相同,但我期待类似 virtualbox 的桥接网络。在这种情况下,不需要端口映射或看起来像单个主机。
    【解决方案2】:

    这是一种预期行为,因为您使用 macvlan 创建的网络在您的 VM 和 macvlan 网桥之间没有任何连接(默认情况下 docker create macvlan network 在网桥模式下)。您创建的容器 C1 和 C2 的接口连接到 macvlan 网桥。这就是为什么 C1 和 C2 能够相互 ping 通,但是从 VM(guest) 您无法 ping C1 和 C2,因此无法从主机。

    要从 VM 连接到容器 C1 和 C2,请创建一个类型为 bridge 的接口并分配一个 ip。下面的命令:(这些命令可能会产生副作用。您可能会完全失去与虚拟机的连接。如果您通过 ssh 连接,请确保您有 2 个连接到虚拟机的接口和 ssh 到虚拟机的接口,而不是网络 192.168.1.0/ 中具有 IP 的接口/ 24)

    1. 删除网络 192.168.1.0/24 中具有 ip 的接口的 ip
    2. ip addr delete (ip_of_interface) dev (interface eg-eth0)
    3. ip link add mymacvlan1 link (VM interface name eg. - eth0) type macvlan mode bridge
    4. ip link set mymacvlan1 up
    5. ip addr add 192.168.1.20/24 dev mymacvlan1
    6. ping 你的容器 - ping (C1 ip) -I mymacvlan1

    请注意这些更改不是启动持久性的

    为了能够从主机ping,您需要确保VM接口在虚拟机VM网络设置中具有混杂模式。

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多