Docker 启用 IPV6 支持

参考官网文档

让 docker 默认的bridge网络支持 ipv6

  1. 修改 docker 配置文件 /etc/docker/daemon.json (使用 snap 安装的 docker 则在 /var/snap/docker/current/config/daemon.json
sudo vim /etc/docker/daemon.json

写入:

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

参数介绍

  • ipv6:在默认网络上启用IPv6网络。
  • fixed-cidr-v6:将子网分配给默认网桥网络,启用动态IPv6地址分配。
  • ip6tables:启用了额外的IPv6数据包过滤规则,提供网络隔离和端口映射。默认情况下,它是启用的,但可以禁用。
  1. 重新启动Docker守护程序,以便更改生效
sudo systemctl restart docker

启动容器时不指定网络会使用默认的 bridge 网络,上述修改让 bridge 支持了 ipv6

让自定义网络支持 ipv6

默认创建的自定义网络是不支持 ipv6 的,可以在创建时指定参数来支持:

# 使用 `docker network create` 创建自定义网络
docker network create --ipv6 ip6net
 
# 使用 `docker network create` 指定IPv6子网:
docker network create --ipv6 --subnet 2001:db8::/64 ip6net

或者你使用 docker compose,想在容器启动时自动创建一个支持 ipv6 的网络:

 networks:
   ip6net:
     enable_ipv6: true
     ipam:
       config:
         - subnet: 2001:db8::/64

docker compose 创建的网络会增加一个 父目录名前缀