必须配置"ipv6": true和"fixed-cidr-v6"两项,后者需使用合法IPv6子网(如2409:807e:58cc:114::/80),不可用文档地址2001:db8::/32;推荐追加"ip6tables": true和"experimental": true以增强稳定性与功能。
要在 docker 中启用 ipv6 网络支持,核心是正确配置 /etc/docker/daemon.json 文件。这个文件控制 docker 守护进程的行为,ipv6 相关功能必须在这里显式开启,且不能只写 "ipv6": true 就完事——"fixed-cidr-v6" 是强制项,缺一不可。
必须配置的两项基础参数
以下是最小可用配置,适用于绝大多数生产或测试场景:
-
"ipv6": true:全局启用 IPv6 支持。不加这行,所有容器默认只有 IPv4。 -
"fixed-cidr-v6": "2001:db8:1::/64":为默认 bridge 网络(如docker0)指定 IPv6 地址段。这个 CIDR 必须是你能合法使用的网段,不能随意填。
⚠️ 注意:2001:db8::/32 是 IETF 预留的文档专用地址,仅用于示例或离线测试;上线前务必换成你服务器实际获得的公网 IPv6 子网(例如 2409:807e:58cc:114::/80)或私有 ULA 地址(如 fd00:abcd::/64)。
推荐追加的实用参数
这些不是必需,但能显著提升 IPv6 的稳定性与可管理性:
-
"ip6tables": true:让 Docker 自动管理 IPv6 防火墙规则(如 NAT、转发),避免容器出向不通或跨网络通信失败。 -
"experimental": true:启用实验性功能,部分 IPv6 相关特性(如更细粒度的网关控制、双栈 DNS 解析)依赖它。 -
"default-gateway-v6": "fd00:abcd::1"(可选):显式指定容器默认 IPv6 网关地址,避免 Docker 使用自动生成的地址(如::1),便于排查和统一策略。
完整示例(生产环境可用)
假设你从服务商获得的 IPv6 子网是 2409:807e:58cc:114::/80,可这样写:
"ipv6": true,
"fixed-cidr-v6": "2409:807e:58cc:114::/80",
"ip6tables": true,
"experimental": true
}
保存后执行 sudo systemctl restart docker 生效。之后运行 ip -6 addr show docker0 应能看到该网段分配给了桥接接口。
常见错误提醒
配置后仍不通?重点检查这几处:
- 宿主机本身未启用 IPv6(
sysctl net.ipv6.conf.all.disable_ipv6输出应为0); - 云服务器安全组或防火墙未放行 IPv6 流量(尤其 ICMPv6 和目标端口);
-
fixed-cidr-v6与宿主机公网 IPv6 不在同一子网,导致路由不可达; - 容器启动时未挂载到支持 IPv6 的网络(默认 bridge 已支持,但自定义网络需显式加
--ipv6)。


















