Docker Community Forums

Share and learn in the Docker community.

Swarm Overlay Not Handing Out Unique IPv6 Addresses

Scenario:

Docker version 19.03.8, build afacb8b

Two docker nodes (east/west) in swarm as managers. Overlay network created with specified IPv6 and IPv4 subnets. Alpine containers spawned against custom network receive unique IPv4 addresses, but not IPv6 addresses.

Assume ipv6 support and daemon.json set correctly.

{
"ipv6": true,
"fixed-cidr-v6": "fc0c::/64"
}

Create network, visible on both nodes.

 docker network create --attachable --driver overlay --ipv6 --subnet fc0c:1::/120 --subnet 10.10.10.0/24 --opt encrypted webserver-net

From node 1 (west) deploy Alpine

docker run -ti --name west1 -d --rm --network webserver-net alpine 
docker run -ti --name west2 -d --rm --network webserver-net alpine 
docker run -ti --name west3 -d --rm --network webserver-net alpine

From node 2 (east) deploy Alpine

docker run -ti --name east1 -d --rm --network webserver-net alpine 
docker run -ti --name east2 -d --rm --network webserver-net alpine 
docker run -ti --name east3 -d --rm --network webserver-net alpine 

Now inspect the IP addresses. Note that ipv4 is unique and staggard, but ipv6 steps on one another :

East

[root@east project]# docker inspect east1 | egrep "IPv4Address|GlobalIPv6Address"
            "GlobalIPv6Address": "",
                        "IPv4Address": "10.10.10.2"
                    "GlobalIPv6Address": "fc0c:1::3",
[root@east project]# docker inspect east2 | egrep "IPv4Address|GlobalIPv6Address"
            "GlobalIPv6Address": "",
                        "IPv4Address": "10.10.10.4"
                    "GlobalIPv6Address": "fc0c:1::4",
[root@east project]# docker inspect east3 | egrep "IPv4Address|GlobalIPv6Address"
            "GlobalIPv6Address": "",
                        "IPv4Address": "10.10.10.5"
                    "GlobalIPv6Address": "fc0c:1::5",

West

[root@west ~]# docker inspect west1 | egrep "IPv4Address|GlobalIPv6Address"
            "GlobalIPv6Address": "",
                        "IPv4Address": "10.10.10.7"
                    "GlobalIPv6Address": "fc0c:1::3",
[root@west ~]# docker inspect west2 | egrep "IPv4Address|GlobalIPv6Address"
            "GlobalIPv6Address": "",
                        "IPv4Address": "10.10.10.9"
                    "GlobalIPv6Address": "fc0c:1::4",
[root@west ~]# docker inspect west3 | egrep "IPv4Address|GlobalIPv6Address"
            "GlobalIPv6Address": "",
                        "IPv4Address": "10.10.10.11"
                    "GlobalIPv6Address": "fc0c:1::5",

Notice how fc0c:1::3 , 4 , and 5 are double-assigned? On the node, each are able to ping6 eachother, but they are not able to ping6 across the fabric. IPv4 ping between containers is no problem, full mesh.

Any ideas? Is this a bug?