为 Docker 容器加入 IPv6 网络
技术分享 Docker环境: debian12
启用 Docker daemon IPv6 支持
编辑 /etc/docker/daemon.json,添加 IPv6 配置:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:2::/64"
}
然后重启 Docker:
systemctl restart docker
⚠️
fixed-cidr-v6必须指定一个 IPv6 子网,不然 Docker 不会给容器分配 IPv6。
创建支持 IPv6 的自定义网络
docker network create \
--driver bridge \
--subnet 172.19.0.0/16 \
--gateway 172.19.0.1 \
--ipv6 \
--subnet 2001:db8:2::/64 \
--gateway 2001:db8:2::1 \
myip_v6
--ipv6→ 开启 IPv6--subnet/--gateway→ IPv4--subnet-ipv6/--gateway-ipv6→ IPv6 子网
如果你看到 unknown flag,说明你的 Docker 版本不支持在命令行直接指定 IPv6 子网。
旧版本 Docker 可以这样操作:
- 先启用 daemon IPv6(上一步)
- 创建网络时只用
--ipv6,Docker 会自动分配 IPv6:
docker network create --driver bridge --ipv6 myip_v6
- 查看 IPv6 分配:
docker network inspect myip_v6
- Docker 会在网络里给每个容器分配
GlobalIPv6Address - 如果需要特定子网,必须升级 Docker
临时生效: 把当前运行的容器加入网络
docker network connect myip_v6 mycontainer
长期生效: 在 docker-compose.yml 中添加
如果你希望每次用 docker-compose up 都自动连接 IPv6 网络,需要修改 docker-compose.yml:
version: "3.9"
services:
myservice:
image: your_image
networks:
- myip
- myip_v6 # 添加 IPv6 网络
networks:
myip:
driver: bridge
myip_v6:
external: true # 使用你已经创建的 IPv6 网络
external: true→ 表示使用已经存在的 Docker 网络,不让 compose 创建新网络- 这样启动容器时就自动连接 IPv6 网络,不用每次手动执行
docker network connect