• 欢迎访问ABCRK.COM,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入ABCRK.COM QQ群
  • 测试信息1
  • 已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 测试信息2https://abcrk.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏ABCRK.COM吧

给docker里的每一个容器一个独立的ipv6地址

Linux admin 来源:zu1k.com 1年前 (2023-10-19) 497次浏览 0个评论

首先,给docker engine开启ipv6支持,
参考: https://docs.docker.com/config/daemon/ipv6/
https://gdevillele.github.io/engine/userguide/networking/default_network/ipv6/
配置/etc/docker/daemon.json文件如下:

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

执行systemctl reload docker重载Docker Engine的配置文件
这样docker默认的bridge网络就会给容器分配随机的ipv6地址了
但是我们通常需要固定的ipv6地址,所以需要添加自定义网桥网络

docker network create \
    -d bridge --ipv6 \
    --subnet="2001:5001:6666::/80" \
    --gateway="2001:5001:6666::1" \
    --subnet=172.28.0.0/16 \
    --gateway=172.28.0.1 ipv6

然后启动docker容器时候指定ipv6网桥和ipv6地址

docker run -itd -P --ip=172.28.0.101 \
    --ip6="2001:5001:6666::101" \
    --network=ipv6 \
    --name=ipv6test \
    ubuntu:18.04 /bin/bash

此时容器已经有独立的ipv6地址了,我们发现向外访问可以访问,但是外界访问不到docker后面隐藏的container 这是因为ipv6使用NDP协议,我们需要在容器的宿主机上设置 ndp代理

sysctl net.ipv6.conf.ens3.proxy_ndp=1

ens3是我的宿主机外网网卡,这里需要替换成你自己的
这里每一个docker分配的ipv6地址都需要添加这样一条规则

ip -6 neigh add proxy 2001:5001:6666::101 dev ens3

版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:给docker里的每一个容器一个独立的ipv6地址
喜欢 (0)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址