Docker配置支持IPv6

开启 IPv6 支持

默认情况下,docker 默认仅默认开启了 IPv4 支持,如果需要启动 IPv6,配置 docker 守护进程对 IPv6 的支持。

注意,IPv6 网络仅支持运行在 Linux 主机上。

配置步骤:

  1. 编辑 /etc/docker/daemon.json

    1
    2
    3
    4
    {
    "ipv6": true, # 开启 IPv6 支持
    "fixed-cidr-v6": "fd00::/80" #设置子网范围,可用长度至少为80
    }
  2. 重启 docker 服务

    1
    systemctl restart docker

    官网文档 说 reload 也是可以的,但是我使用时好像有点问题,这个后面再验证。

  3. 查看默认网桥网络状态是否开启了 IPv6 是否有了 gateway 地址

    1
    docker network inspect bridge

    重点内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ...
    "Driver": "bridge",
    "EnableIPv6": true, # 确认开启 IPv6
    "IPAM": {
    "Driver": "default",
    "Options": null,
    "Config": [
    {
    "Subnet": "172.17.0.0/16",
    "Gateway": "172.17.0.1"
    },
    # 同时又子网和网关信息
    {
    "Subnet": "fd00::/80",
    "Gateway": "fd00::1"
    }
    ]
    },
    ...

创建自定义 IPv6 网络

容器的 IPv6 信息

1
2
3
4
5
6
7
8
"6bfaa6bcccaf6383bbeb9c4ed2b10951776dee6268455e6830325ea1cc3216fa": {
"Name": "webtest",
"EndpointID": "fbd4d766bba0185c38db930d3902d92b65adf1f9918dd225047c5455d7567908",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": "fd00::242:ac11:2/80"
}

从上面的 IPv6Address 和 MacAddress 内容可以看到,docker 容器中的 IPv6 地址的生成方式是通过绑定容器 Mac 地址产生的,避免冲突。

同时也就知道为什么建议是80了,因为 Mac 地址转换为 IPv6 地址正好是 3 段,长度 3 * 16 = 48 。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2023 ligongzhao
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信