🛠️ 立即解决方案
执行以下命令启用 Docker IPv6:
# 1. 停止所有运行的容器(避免冲突)
docker stop $(docker ps -q) 2>/dev/null# 2. 创建 Docker IPv6 配置
sudo tee /etc/docker/daemon.json <<'EOF'
{"ipv6": true,"fixed-cidr-v6": "fd00:dead:beef::/64","ip6tables": true,"experimental": true
}
EOF# 3. 重启 Docker 服务
sudo systemctl restart docker# 4. 等待几秒让服务完全启动
sleep 5# 5. 验证配置
docker info | grep -A5 -B5 IPv6
✅ 验证 IPv6 是否真正启用
配置完成后,重新测试:
# 测试1:检查容器是否获得 IPv6 地址
docker run --rm -it alpine ip -6 addr show# 测试2:检查 Docker 网络接口
ip addr show docker0# 测试3:查看 IPv6 路由表
ip -6 route | grep docker# 获取网关
ip -6 route show default# 测试4:测试 IPv6 网络连通性
docker run --rm -it alpine ping6 -c 3 ipv6.google.com
📊 预期结果
启用成功后,您应该看到:
容器内:除了 ::1 外,还有 fd00:dead:beef::xxx/64 地址
docker0 接口:会有 fd00:dead:beef::1/64 地址
路由表:会有 fd00:dead:beef::/64 dev docker0 路由
如果获取不到网关,表示上级设备与当前系统有一个出问题了
我的问题是系统没有自动获取网关
给容器添加ipv6
在您的 docker-compose.yml 中添加或修改网络配置
services:remnanode:# 您的服务配置...networks:- node_networknetworks:node_network:enable_ipv6: truedriver: bridgeipam:config:- subnet: "fd00:dead:beef:2::/64" # 使用新的 IPv6 子网避免冲突
1. 通过 Netplan 系统配置(推荐)
这是 Ubuntu 的标准网络配置方式,重启后永久有效:
# 查看当前 netplan 配置
sudo cat /etc/netplan/50-cloud-init.yaml# 编辑配置
sudo vim /etc/netplan/50-cloud-init.yaml
在配置文件中添加 IPv6 部分:
network:version: 2ethernets:ens3:dhcp4: truedhcp6: true # 启用 DHCPv6 自动获取配置accept-ra: true # 接受路由器通告
然后应用配置:
sudo netplan apply