docker 启用 ipv6

🛠️ 立即解决方案

执行以下命令启用 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_network

networks:
  node_network:
    enable_ipv6: true
    driver: bridge
    ipam:
      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: 2
  ethernets:
    ens3:
      dhcp4: true
      dhcp6: true  # 启用 DHCPv6 自动获取配置
      accept-ra: true  # 接受路由器通告

然后应用配置:

sudo netplan apply

最终验证

# 验证现有容器 IPv6
docker exec remnanode ip -6 addr show
posted @ 2025-11-26 10:40  上掌  阅读(18)  评论(0)    收藏  举报