Docker容器开启IPv6

本文详细指导如何在Docker中启用IPv6支持,包括编辑daemon.json配置、重启服务,以及在Docker Compose和手动创建网络中的应用。通过实例演示了如何测试IPv6连接,确保IPv6网络在现代开发环境中的可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker容器开启IPv6

Docker默认不开启IPv6配置,某些场景我们又需要IPv6网络支持,随着IPv6的普及,以后的使用场景会越来越多;

Docker开启IPv6支持

首先编辑 /etc/docker/daemon.json 配置文件,默认是没有该文件的,执行以下命令直接创建;

cat >/etc/docker/daemon.json <<EOF
{
    "ipv6": true,
    "fixed-cidr-v6": "fd00::/80",
    "experimental": true,
    "ip6tables": true
}
EOF

然后重启Docker服务;

systemctl restart docker

Docker-Compose启用IPv6

docker-compose.yaml 中使用以下配置启用IPv6地址:

networks:
      local_bridge:
        enable_ipv6: true
        driver: bridge
        ipam:
          config:
            - subnet: "fd00:1001::/80"

docker-compose.yaml 文件必须使用 version: “2”,version: “3” 不支持 enable_ipv6 配置;

image-20220712094702457

如果已有旧的容器在运行(网络配置发生了变化),则需要先销毁容器 docker-compose down 然后再重新创建 docker-compose up

手动创建IPv6网络

创建网络时带 --ipv6 选项,示例如下:

docker network create -d bridge --ipv6 --subnet "fd00:1001::/80" local_bridge

测试

最后在容器内ping一下IPv6地址;

# 进入容器命令行
docker exec -it php bash
# 为容器安装ping命令
apt-get update
apt-get install iputils-ping
# ping
ping -6 dns.google

image-20220712095357453

### 如何在 Docker 中启用并配置 IPv6 支持 为了使 Docker 容器能够支持 IPv6,需对主机上的 Docker 进行特定设置。这涉及到修改 Docker 的守护程序配置文件以及重启服务来应用更改。 #### 修改 Docker 配置文件 编辑 `/etc/docker/daemon.json` 文件,在其中添加关于 `ipv6` 和 `fixed-cidr-v6` 的条目: ```json { "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" } ``` 上述 JSON 片段中的 `"ipv6"` 键设为 `true` 表明启用了 IPv6 功能;而 `"fixed-cidr-v6"` 则指定了用于分配给容器的一个固定的 IPv6 地址范围[^1]。 #### 重新启动 Docker 服务 完成配置文件更新之后,通过执行如下命令让改动生效: ```bash sudo systemctl restart docker ``` 此操作会重启 Docker 守护进程并将新设定应用于所有后续创建的容器中。 #### 创建带有 IPv6 支持的网络 对于希望利用 IPv6 协议通信的新建容器而言,应该将其连接到具有相应属性定义好的自定义桥接网路之上。可以通过下面的方式建立一个新的覆盖层 (overlay) 或者桥梁 (bridge) 类型的网络,并指定其具备双栈能力(即同时兼容 IPv4 及 IPv6): ```bash docker network create \ --driver=bridge \ --subnet=fd00:cafe:babe::/48 \ --ipam-driver=default \ my_custom_network ``` 这里 `-subnet` 参数后面跟的是一个唯一的全局单播地址前缀,用来标识该虚拟子网上面所有的 IP 资源归属关系。注意这里的例子采用 ULA (Unique Local Address),实际部署时可根据需求调整具体的数值[^3]。 #### 将现有容器迁移到新的 IPv6 网络下 假设已经有一个名为 `mycontainer` 的实例正在运行,则可以借助于 `docker network connect` 命令把它附加至之前所构建出来的特殊环境里去: ```bash docker network connect my_custom_network mycontainer ``` 一旦成功关联上了目标网络空间,便意味着这个容器获得了访问外部世界的能力——无论是基于传统的 IPv4 方式还是现代化的 IPv6 接口形式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhuzhu Boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值