当我尝试在 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 逐字复制的。