【问题标题】:How to enable IPv6 in docker compose version: >= 3?如何在 docker compose 版本中启用 IPv6:> = 3?
【发布时间】:2019-09-08 06:28:27
【问题描述】:

我需要为我的 docker 容器同时启用 IPv4/IPv6 双栈支持。我的 docker compose 文件是版本 3。默认情况下启用 IPv4,但如何为我的 docker 容器/网络启用 IPv6?

我已经尝试通过更新 daemon.json 来更新 docker 守护进程,并且我知道更新正在被识别,因为如果文件中有错误,Docker 将不会启动。进行更改后,我重新启动了 Docker(不仅仅是我的容器),但我的容器仍然没有 IPv6 地址。

我发现 docker compose 文件中的 enable_ipv6: true 对于版本 3 或更高版本无效,我不想按文件版本降级。

我更新的 daemon.json:

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

当我使用 docker inspect {id} 对 daemon.json 进行更改后检查我的容器时,我看到以下内容:

"NetworkSettings": {
            "Bridge": "",
            "SandboxID": "df737362d15722fc1b0501ac256ba371417fe513dede807f2a17bd0524630a31",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "9000/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/df737362d157",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "healixportal_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "php-fpm",
                        "9b8a7aee156b"
                    ],
                    "NetworkID": "5523ae0a4a936b47f212f0e301b64cbbad1f279a33107ed1f624e28d2df96c66",
                    "EndpointID": "880e13b64bec3fc84ae5a0abb5054bda66d5f439da6853f3538eb33be14b256b",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:02",
                    "DriverOpts": null
                }
            }
        }

所以仍然没有分配给我的容器的 IPv6 地址...

【问题讨论】:

    标签: docker docker-compose ipv6 docker-networking


    【解决方案1】:

    根据this issue 的 compose repo IPv6 尚不支持,但有一种解决方法可能会为您解决问题:

    您必须注释enable_ipv6: true,并按照文档中的说明保留所有其他参数。 运行后:

    $ sudo docker-compose build

    然后执行:

    $ docker network create --driver bridge --ipv6 --subnet fd15:555::/64 --subnet 172.16.238.0/24 containerName-dockerfile_app_net --attachable

    $ sudo docker-compose up -d

    【讨论】:

    • 什么是`containerName-dockerfile_app_net`?应该改吗?
    • 据我了解,您应该将containerName 替换为您的容器名称,留下-dockerfile_app_net 部分。这只是网络名称。
    • 但是这样,它应该只适用于某个容器。我想要 docker-compose.yml 中定义的所有服务的 IPv6 网络
    • 您是否尝试过我提到的问题中的最后一个建议?
    • 不,我只是放弃 docker 网络,我可能会部署裸机。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2017-01-31
    • 1970-01-01
    • 2023-01-22
    相关资源
    最近更新 更多