公司計划在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地址。
