公司计划在2020年前完成IPV6化改造,于是我先行查阅了一些资料了解Docker进行IPv6化的可能性。
预计明年正式开始测试。
方法一、使容器中的服务支持IPv6地址
不为容器中的服务特别分配IPv6地址。只要Docker把外部的IPv6地址端口映射到容器的IPv4端口上,随后访问主机的IPv6相应端口即可。
方法二、为Docker网络分配IPv6地址
(1)Docker daemon默认只支持IPv4地址,通过在运行Docker时增加--ipv6参数可以使其同时支持ipv4和ipv6地址。
(2)此时容器仅获得了本地ipv6地址,如果要获得全局ipv6地址,必须确保机器有至少/80的地址段,通过在运行Docker时增加--fixed-cidr-v6参数为其配置ipv6子网。
该参数会在路由表中添加一条路由,相当于执行了一下命令:
$ ip -6 route add 2001:db8:1::/64 dev docker0
$ sysctl net.ipv6.conf.default.forwarding=1
$ sysctl net.ipv6.conf.all.forwarding=1
随后,所有路由往2001:db8:1::/64的流量都会通过docker0接口路由
(3)除了在运行时添加参数,还可以直接编辑/etc/docker/daemon.json文件,加入以下内容:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}
其中2001:db8:1::/64是IPv6地址段。
(4)使用systemctl restart docker命令重启Docker。
(5)使用ifconfig命令查看分配到Docker网络的IPv6地址段
(6)完成了上面的配置之后,无需特意配置,只需正常建立容器,即可为容器分配IPv6地址。可以使用“docker inspect容器名”查看容器的IP地址。