Docker容器支持IPv6的方法

1.设置Docker Engine支持IPv6

1) 启动Docker Engine时即开启对IPv6的支持

默认启动时Docker Engine只支持IPv4。

启动Docker Engine时,指定–ipv6选项即可支持IPv6。

2) 对于已经启动的Docker Engine开启对IPv6的支持

配置/etc/docker/daemon.json文件如下。

说明:Docker Engine支持IPv6后,docker0将拥有IPv6的link-local地址fe80::1。但要使得docker0拥有IPv6的global地址,还需要设置–fixed-cidr-v6,以指定Docker容器实例可用的IPv6子网。

执行systemctl reload docker重载Docker Engine的配置文件,Docker Engine将会添加几条新的路由规则到iptables。以上述配置文件为例,Docker Engine将会执行如下等价操作:

$ ip -6 route add fd00:dead:beef::/48 dev docker0 $ sysctl net.ipv6.conf.default.forwarding=1 $ sysctl net.ipv6.conf.all.forwarding=1

如果Docker宿主机的网卡(例如eth0)是通过路由广播获取Docker Engine的IPv6配置参数,则上述配置文件的生效将引起Docker Engine将会执行如下等价操作:

$ ip -6 route add fd00:dead:beef::/48 dev docker0 $ sysctl net.ipv6.conf.default.forwarding=1 $ sysctl net.ipv6.conf.all.forwarding=1 $ sysctl net.ipv6.conf.eth0.accept_ra=2

2 创建Docker网络支持IPv6

事实上,Docker Engine支持IPv6后,Docker Engine默认的bridge网络就支持IPv6,直接使用bridge网络即可(默认即使用bridge网络)。

如果要使用定制网络,则创建网络时docker network create带–ipv6选项,示例如下:

docker network create -d bridge --ipv6 --subnet "fd00:daad:beee:1::/64" --gateway="fd00:daad:beee::1" --subnet=172.18.0.0/16 --gateway=172.18.0.1 myNet

3 创建容器实例支持IPv6

Docker Engine支持IPv6后,创建容器时docker run带–ip6选项即可。

注意,如果docker run命令带–ip或–ip6选项,则其网络不能是默认的bridge网络,否则会抛出如下异常:

user specified IP address is supported on user defined networks only.

必须为创建的容器采用定制网络,才能够通过–ip或–ip6选项指定容器实例的IP。

首先要保证定制网络(如myNet)支持IPv6,然后创建容器时docker run带–ip6选项和–network=myNet即可。

docker run -itd -P --ip=172.18.0.101 --ip6="fd00:daad:beee:1::101" --network=myNet --name=my101 centos:7

参考链接:

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/ipv6/#how-ipv6-works-on-docker

原文链接:https://blog.csdn.net/taiyangdao/article/details/83066009

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享