Как включить IPv6 в docker compose version:> = 3? - PullRequest
2 голосов
/ 18 апреля 2019

Мне нужно включить поддержку двух стеков IPv4 / IPv6 для моих док-контейнеров. Мой составной файл Docker версии 3. По умолчанию IPv4 включен, но как мне включить IPv6 для моих Docker-контейнеров / сети?

Я уже пытался обновить демон docker, обновив daemon.json, и я знаю, что обновления распознаются, потому что Docker не запустится, если в файле есть ошибки. Я перезапустил Docker (не только мои контейнеры) после внесения изменений, но все еще не указал IPv6-адреса для моих контейнеров.

Я обнаружил, что enable_ipv6: true в файле составления Docker недопустим для версии 3 или выше, и я не хотел бы понижать версию до версии файла.

Мой обновленный daemon.json:

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

Когда я проверяю свои контейнеры, после внесения изменений в daemon.json с помощью docker inspect {id}, я вижу следующее:

"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 ...

1 Ответ

1 голос
/ 18 апреля 2019

Согласно эта проблема для композитного репозитория IPv6 еще не поддерживается, но есть обходной путь, который может помочь вам:

Вы должны прокомментироватьenable_ipv6: true и оставьте все остальные параметры, как указано в документации.После запуска:

$ sudo docker-comopose 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

...