Swarm overlay IPv6 subnet cannot be allocated (invalid Prefix / inconsistent pool handling) in Docker 29.4.1
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 72.1k
- Forks
- 19.2k
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 164
Description
Description
Hey folks!
I am trying to create an overlay network with IPv6 support results in incomplete initialization. Am I doing something wrong, or is this explicitly not supported? Or maybe IPv6 is supported, but not IPAM and I would have to deal myself with that for now?
If I try without specifying a subnet, I get EnableIPv6 but no subnet. When I try with subnet I get one of 3 errors:
Failed to find networkPool overlaps with other one on this address spacecannot find address pool
Cheers!
-Dragos
Reproduce
-
docker swarm init --advertise-addr fdbf:993c:3b9:0:21b:21ff:febc:102c
... works ... -
Make an overlay network, with IPv6 enabled
docker network create \
--driver overlay \
--attachable \
--ipv6 \
ovl-test
iaplxqscyhjljj89gxd7qfpbb
> docker network ls
NETWORK ID NAME DRIVER SCOPE
4e2d94811029 bridge bridge local
ab8c8d02aacb docker_gwbridge bridge local
c6c766f9f3f2 host host local
lme3wha6q57t ingress overlay swarm
a8fdd26f4619 none null local
iaplxqscyhjl ovl-test overlay swarm
> docker network inspect ovl-test
[
{
"Name": "ovl-test",
"Id": "iaplxqscyhjljj89gxd7qfpbb",
"Created": "2026-04-28T09:04:24.392769918Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv4": true,
"EnableIPv6": true,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.1.0/24",
"Gateway": "10.0.1.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4097"
},
"Labels": null,
"Containers": {},
"Status": {
"IPAM": {
"Subnets": {
"10.0.1.0/24": {
"IPsInUse": 3,
"DynamicIPsAvailable": 253
}
}
}
}
}
]
--> EnableIPv6=true
--> (issue) IPAM - No IPv6 subnets?
- Make an overlay network, with IPv6 enabled and a subnet specified (outside the daemon.json configuration)
> docker network create \
--driver overlay \
--attachable \
--ipv6 \
--subnet fd42:1234:5678:1::/64 \
--gateway fd42:1234:5678:1::1 \
ovl-test
e8dojebxiefo0rvbgtvcao4d1
> docker network ls
NETWORK ID NAME DRIVER SCOPE
4e2d94811029 bridge bridge local
ab8c8d02aacb docker_gwbridge bridge local
c6c766f9f3f2 host host local
lme3wha6q57t ingress overlay swarm
a8fdd26f4619 none null local
e8dojebxiefo ovl-test swarm
> docker network inspect ovl-test
[]
Error response from daemon: network ovl-test not found
Also observed in syslog:
Apr 28 11:07:08 kermit dockerd[1580178]: time="2026-04-28T11:07:08.350175525+02:00" level=error msg="Failed to find network iaplxqscyhjljj89gxd7qfpbb on node ab8gmawmd9rym7dtf8yc6bc3t" module=node node.id=ab8gmawmd9rym7dtf8yc6bc3t
Apr 28 11:07:57 kermit dockerd[1580178]: time="2026-04-28T11:07:57.062690992+02:00" level=error msg="Failed to release pool fd42:1234:5678:1::/64" error="address space does not contain specified address pool"
Apr 28 11:07:57 kermit dockerd[1580178]: time="2026-04-28T11:07:57.062718572+02:00" level=error msg="Failed allocation for network e8dojebxiefo0rvbgtvcao4d1" error="failed allocating pools and gateway IP for network e8dojebxiefo0rvbgtvcao4d1: cannot find address pool for poolID:fd42:1234:5678:1::/64/invalid Prefix" module=node node.id=ab8gmawmd9rym7dtf8yc6bc3t
- Try with a subnet in the configuration
> docker network create \
--driver overlay \
--attachable \
--ipv6 \
--subnet fd00:dead:beef:1::/64 \
ovl-test
xoq65fj7zba4osszeub8abnuv
> docker network ls
NETWORK ID NAME DRIVER SCOPE
4e2d94811029 bridge bridge local
ab8c8d02aacb docker_gwbridge bridge local
c6c766f9f3f2 host host local
lme3wha6q57t ingress overlay swarm
a8fdd26f4619 none null local
xoq65fj7zba4 ovl-test swarm
> docker network inspect ovl-test
[]
Error response from daemon: network ovl-test not found
Syslog:
Apr 28 11:13:05 kermit dockerd[1580178]: time="2026-04-28T11:13:05.060907553+02:00" level=error msg="Failed allocation for network xoq65fj7zba4osszeub8abnuv" error="failed allocating pools and gateway IP for network xoq65fj7zba4osszeub8abnuv: invalid pool request: Pool overlaps with other one on this address space" module=node node.id=ab8gmawmd9rym7dtf8yc6bc3t
- Try to use a subnet closer to the one configured
> docker network create \
--driver overlay \
--attachable \
--ipv6 \
--subnet fd00:dead:beef:100::/64 \
ovl-test
kpmj6j6e6dmtwlpp0557y0t7i
> docker network ls
NETWORK ID NAME DRIVER SCOPE
4e2d94811029 bridge bridge local
ab8c8d02aacb docker_gwbridge bridge local
c6c766f9f3f2 host host local
lme3wha6q57t ingress overlay swarm
a8fdd26f4619 none null local
kpmj6j6e6dmt ovl-test swarm
> docker network inspect ovl-test
[]
Error response from daemon: network ovl-test not found
Syslog says:
Apr 28 11:16:37 kermit dockerd[1580178]: time="2026-04-28T11:16:37.375135655+02:00" level=error msg="Failed allocation for network kpmj6j6e6dmtwlpp0557y0t7i" error="failed allocating pools and gateway IP for network kpmj6j6e6dmtwlpp0557y0t7i: cannot find address pool for poolID:fd00:dead:beef:100::/64/invalid Prefix" module=node node.id=ab8gmawmd9rym7dtf8yc6bc3t
Expected behavior
Either IPv6 would not be supported and the operation would fail, or it would be supported and IPAM would be showing the IPv6 subnet.
docker version
Client: Docker Engine - Community
Version: 29.4.1
API version: 1.54
Go version: go1.26.2
Git commit: 055a478
Built: Mon Apr 20 16:32:36 2026
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 29.4.1
API version: 1.54 (minimum version 1.40)
Go version: go1.26.2
Git commit: 6c91b92
Built: Mon Apr 20 16:32:36 2026
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.2.3
GitCommit: 77c84241c7cbdd9b4eca2591793e3d4f4317c590
runc:
Version: 1.3.5
GitCommit: v1.3.5-0-g488fc13e
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info
Client: Docker Engine - Community
Version: 29.4.1
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.33.0
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v5.1.3
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 32
Server Version: 29.4.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Swarm: active
NodeID: itnb09kewm0ldsl9yzgqdz56p
Is Manager: true
ClusterID: x66t4h5q1l3e1n1465ukkkwst
Managers: 1
Nodes: 1
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: fdbf:993c:3b9:0:21b:21ff:febc:102c
Manager Addresses:
[fdbf:993c:3b9:0:21b:21ff:febc:102c]:2377
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 77c84241c7cbdd9b4eca2591793e3d4f4317c590
runc version: v1.3.5-0-g488fc13e
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.8.0-101-generic
Operating System: Ubuntu 22.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 32
Total Memory: 60.47GiB
Name: kermit
ID: 4424c7cb-587d-4279-910a-eff2a7259c6f
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
::1/128
Live Restore Enabled: false
Default Address Pools:
Base: 10.10.0.0/16, Size: 24
Base: fd00:dead:beef::/56, Size: 64
Firewall Backend: iptables
Additional Info
cat /etc/docker/daemon.json
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:caff:ffff::/64",
"iptables": true,
"default-address-pools": [
{ "base": "10.10.0.0/16", "size": 24 },
{ "base": "fd00:dead:beef::/56", "size": 64 }
]
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the documented docker swarm init and docker network create commands, using the supplied daemon.json default-address-pools configuration. Trace overlay network creation and IPAM allocation while comparing the reported invalid Prefix, overlap, and missing-pool errors. Done means IPv6 overlay creation either fails explicitly as unsupported or succeeds with the IPv6 subnet visible in docker network inspect.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100