为 Docker 创建 macvlan 网络时使用的地址

为 Docker 创建 macvlan 网络时使用的地址

当我尝试在 Docker 中创建 macvlan 网络时,我得到了以下信息:

[Sat10@16:49:04][root@nudisco:/opt/mountdog] #〉docker network create \
>   --attachable                               \
>   --driver macvlan                           \
>   --gateway 10.10.0.1                        \
>   --subnet  10.10.0.0/24                     \
>   --ipv6                                     \
>   --gateway 2001:XXXX:XXXX:0a00::            \
>   --subnet  2001:XXXX:XXXX:0a00::/120        \
>   --opt parent="z0b00" z0b00
Error response from daemon: failed to allocate gateway (2001:XXXX:XXXX:0a00::): Address already in use
[Sat10@16:49:04][root@nudisco:/opt/mountdog] #〉

它们是在已经创建的 VLAN 接口(即“ z0b00”)上创建的,这些接口甚至没有启用 IP 寻址,只有 L2 接口,仅此而已,但仍然 (1.) 它抱怨网关地址已被使用,并且 (2.) 如果网关被占用,它又在乎什么呢!?它不应该占用它,而应该利用它,依赖它(更像是转达给它在这种情况下),甚至,守护进程,但未来的客户容器。对吗?那么这条消息是怎么回事?

地址没有地址从未在主机上存在过,接口在创建时关闭了 L3 设置,直到应用后才会关闭。只有应用后才会创建并启动,所以我认为它也不能像是一个拖延的过程。这真的没有意义。

这将是相应的网络接口:

[Sat10@17:15:48][root@nudisco:/opt/mountdog] #〉ip l sh z0a00
4: z0a00@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:50:56:00:00:32 brd ff:ff:ff:ff:ff:ff
[Sat10@17:16:27][root@nudisco:/opt/mountdog] #〉ip a sh z0a00
4: z0a00@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:50:56:00:00:32 brd ff:ff:ff:ff:ff:ff

这种语法以前是有效的,我该如何修复它?我想也许它指的是 IPv4/IPv6 网关,已经在另一个堆栈中定义,那么它就说得通了。但我仔细检查了添加的内容,--help发现docker network create没有办法区分任何常见网络属性的 IPv4 和 IPv6。所以不可能是那样。对 IPv6 堆栈的唯一确认是--ipv6仅表示“启用 IPv6”,而不是“从这里开始,这些是 IPv6 设置”的指示,尽管它看起来像是。

正如我提到的,我以前用过这个语法,它在一个文本文件中,我可以直接将其粘贴到终端上,它可以为主机部署完整配置,并在一个步骤中部署容器,我有它的多个版本,既适用于不同的主机,也适用于不同的时间。我搜索了字符串“docker network create”,果然找到了它们;语法完全一样。我不知道发生了什么。

顺便说一句,就在命令之前,我运行了,docker network rm $(docker network ls -q)所以实际上没有冲突。Docker 实际上不是“Docker”,而是 Fedora 39 上的 Moby Engine,不用担心,我在其他发行版中也发现了这个错误。它仍然适用。:(

魔法,围绕着一只死猫跳舞;此时所有的建议都是好的,我会很感激的。

更新

我解决了这个问题,删除了 IPv6 网关,因为它是 macvlan,我可以使用我找到的这个小代码片段让它监听路由器广告,但尽管如此,仍然存在一些错误,而这些错误本不应该是错误的,所以我觉得这有点未经证实,但至少更多的是“这不是我”,请查看第 9 行及其周围:

1   [Sat10@19:42:49][root@nudisco:/opt/mountdog] #〉docker network create \
2   >   --attachable                              \
3   >   --driver macvlan                          \
4   >   --gateway 10.9.0.1                        \
5   >   --subnet  10.9.0.0/24                     \
6   >   --ipv6                                    \
7   >   --subnet  2001:XXXX:XXXX:0900::/120       \
8   >   --opt parent="z0900" z0900
9   Error response from daemon: invalid subinterface vlan name z0900, example formatting is eth0.10
10  [Sat10@19:42:49][root@nudisco:/opt/mountdog] #〉docker network create \
11  >   --attachable                              \
12  >   --driver macvlan                          \
13  >   --gateway 10.10.0.1                       \
14  >   --subnet  10.10.0.0/24                    \
15  >   --ipv6                                    \
16  >   --subnet  2001:XXXX:XXXX:0a00::/120       \
17  >   --opt parent="z0a00" z0a00
18  0d3d242ee3d7567aeef4fa68a0ad2408d66caea337c262b6cffdbe4adf2848d0
19  [Sat10@19:42:50][root@nudisco:/opt/mountdog] #〉docker network create \

除了 IPv6 地址的第二和第三个十六进制数之外,该代码是从 CLI 逐字复制的。

相关内容