从 Docker Swarm 访问仅限 IPv6 的网络

从 Docker Swarm 访问仅限 IPv6 的网络

我有一个关于 IPv6 和 Swarm 的问题。
虽然我知道 Docker Swarm 不支持 IPv6 覆盖网络,但我想知道是否有办法从 Docker Swarm 集群访问仅 IPv6(没有双栈,所以这里没有 IPv4)。

我是一个简单的集群,在双栈网络上有 3 个节点,在仅 IPv6 网络上有一个辅助接口(无法触及那个,因此 IPv4 在那里不是一个选项)。

我尝试设置 MacVlan 和 IpVlan,但没有成功。Docker compose 不允许我使用任何 IPv6 相关参数,如果我尝试直接在其中一个主机上创建网络,IPv6 相关参数似乎会消失(但仅在使用 scope=swarm 时):

> docker network create --driver macvlan --ipv6 --subnet fd2b:a315:a66f:75e7::/64 --attachable storagenet
> docker inspect storagenet
[
    {
        "Name": "storagenet",
        "Id": "acde8763026c8b83319f542bf056b1ae3aac1a1dda2918929f296ef83a86cc87",
        "Created": "2019-06-20T22:21:01.66099475+02:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.96.0/20",
                    "Gateway": "192.168.96.1"
                },
                {
                    "Subnet": "fd2b:a315:a66f:75e7::/64"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

> docker network rm storagenet
> docker network create --driver macvlan --scope=swarm --ipv6 --subnet fd2b:a315:a66f:75e7::/64 --attachable storagenet
> docker inspect storagenet
[
    {
        "Name": "storagenet",
        "Id": "zljkxaebgc54l9l8dbav6oz4k",
        "Created": "2019-06-20T20:22:18.596857196Z",
        "Scope": "swarm",
        "Driver": "macvlan",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": null,
        "Options": null,
        "Labels": null
    }
]

我尝试连接到该网络的每个容器都会抛出一个错误,提示我找不到任何可以租用的 IPv6 地址(这是预料之中的,因为未设置子网)。

您知道从容器本身访问仅 IPv6 网络的任何方法吗?

多谢

相关内容