Docker:按 IP 升序排列的多个 macvlan

问题描述 投票:0回答:1
Ubuntu 5.3.0-51-generic
Docker version 19.03.6 (Docker CE)

我有两个带有网络接口 Device0 和 Device1 的网络适配器,我想将它们连接到 Container0 和 Container1。

每个容器都需要有自己的 IP 地址,然后是另一个,例如 172.16.0.10 到 172.16.0.11

我读到,使用 macvlan 实用程序可能会很好。

使用以下代码,其中 i [0,1] 我尝试创建 2 个不同的 macvlan,连接所述设备:

docker network create -d macvlan \
    --subnet=172.16.0.1$i/24 \
    -o parent=Device$i \
    macvlan_$counter

代码创建了第一个网络,但由于地址空间重叠,第二个网络失败了

fd351775c70e1a3718e78bbed07e8f7a577a203f8526d2f80dad1b3e8f5f6482 
Error response from daemon: Pool overlaps with other one on this address space

知道如何解决这个问题吗?

docker subnet macvlan
1个回答
0
投票

您看到的错误是因为您的 Docker 实例已经配置了一个配置了一系列 IP 的网络,它将与您的新 macvlan 网络的默认范围发生冲突。

您可以在创建网络时使用

--ip-range
标志(或
ip_range
中的
compose.yaml
)指定分发给网络上容器的 IP 范围。示例:

docker network create -d macvlan \
  --subnet=192.168.32.0/24 \
  --ip-range=192.168.32.128/25 \
  --gateway=192.168.32.254 \
  --aux-address="my-router=192.168.32.129" \
  -o parent=eth0 macnet32

https://docs.docker.com/network/drivers/macvlan/

如果您希望容器始终使用单个 IP,您可以为该范围指定

/32
网络掩码,例如
--ip-range=192.168.32.128/32

请注意,Docker 只允许您为每个父级创建一个 macvlan - 请参阅 https://github.com/moby/libnetwork/issues/2384 了解更多详细信息和解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.