我需要为我的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"
}
当我检查容器时,在对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地址...
答案 0 :(得分:1)
根据this issue,目前尚不支持撰写仓库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