Hi,
I have configure my docker daemon with the following daemon.json:
{
"ipv6": false,
"fixed-cidr-v6": "2001:db8:1::/64"
}
This used to work in older docker versions. So here’s the current setup:
Client:
Version: 27.4.1
API version: 1.47
Go version: go1.23.4
Git commit: b9d17eaebb55b7652ce37ae5c7c52fcb34194956
Built: Fri Jan 17 08:02:51 2025
OS/Arch: linux/amd64
Context: default
Server:
Engine:
Version: 27.4.1
API version: 1.47 (minimum version 1.24)
Go version: go1.23.4
Git commit: c710b88579fcb5e0d53f96dcae976d79323b9166
Built: Tue Jan 14 09:47:44 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.0.1
GitCommit: 88aa2f531d6c2922003cc7929e51daf1c14caa0a
runc:
Version: 1.2.4
GitCommit: 6c52b3fc541fb26fe8c374d5f58112a0a5dbda66
docker-init:
Version: 0.19.0
GitCommit: de40ad007797e0dcd8b7126f27bb87401d224240
since yesterdays system update when I start docker it errors out with the following error:
time="2025-01-28T18:26:39.643255160+01:00" level=info msg="Loading containers: start."
time="2025-01-28T18:26:40.751789695+01:00" level=warning msg="ip6tables is enabled, but cannot set up ip6tables chains" error="failed to create NAT chain DOCKER: iptables failed: ip6tables --wait -t nat -N DOCKER: ip6tables v1.8.11 (legacy): can't initialize ip6tables table `nat': Table does not exist (do you need to insmod?)\nPerhaps ip6tables or your kernel needs to be upgraded.\n (exit status 3)"
time="2025-01-28T18:26:41.763463183+01:00" level=warning msg="could not create bridge network for id b752425d73efd37c2789477a796435f217738c00ea012cf4285a542c100f1fc1 bridge name docker0 while booting up from persistent state: Failed to Setup IP tables: Unable to enable NAT rule: (iptables failed: ip6tables --wait -t nat -I POSTROUTING -s 2001:db8:1::/64 ! -o docker0 -j MASQUERADE: ip6tables v1.8.11 (legacy): can't initialize ip6tables table `nat': Table does not exist (do you need to insmod?)\nPerhaps ip6tables or your kernel needs to be upgraded.\n (exit status 3))"
time="2025-01-28T18:26:43.501596376+01:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
time="2025-01-28T18:26:44.255610268+01:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby
failed to start daemon: Error initializing network controller: error creating default "bridge" network: Failed to Setup IP tables: Unable to enable NAT rule: (iptables failed: ip6tables --wait -t nat -I POSTROUTING -s 2001:db8:1::/64 ! -o docker0 -j MASQUERADE: ip6tables v1.8.11 (legacy): can't initialize ip6tables table `nat': Table does not exist (do you need to insmod?)
Perhaps ip6tables or your kernel needs to be upgraded.
(exit status 3))
I already tried to circumvent this problem by setting “ipv6_enable:false” in the docker-compose files I have ìn their networks section, but the problem persists.
The only way I can make docker start is to disable ipv6 in daemon.json to “ipv6: disabled”. But I’m am planning to run a container that needs an ipv6 network so I need to re-enable it.
I don’t know if this is some kind of bug that docker tries to use ‘nat’ table with ip6tables, this of course fails or if I have configured something wrong.
As I said, it used to work with ipv6 enabled until the latest system update. So something changed that it now tries to setup a chain DOCKER
on table nat
on ip6tables which ofc doesnot work and I have no clue if this needs a bug report or how to fix it without completely disabling ipv6 on docker as a whole.