由于有的docker容器需要使用ipv6的地址,家庭宽带因为ipv6分配的前缀总是在不断变化,因此使用固定公网前缀给dokcer容器分配ipv6的方式不再适用,再者给每个容器都分配一个ipv6地址还不好管理,因此这里我们讨论使用的是ipv6nat的方式使每个docker容器都可以共享宿主机的ipv6地址。当然使用主机网络模式也并非不可。
修改docker守护程序
编辑 /etc/docker/daemon.json,加入下面内容,没有的话在/etc/docker目录下新建daemon.json文件。
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80",
"experimental": true,
"ip6tables": true
}
完成后,重启dokcer
systemctl restart docker
测试
使用下面命令运行一个busybox的用完自动删除的容器,如果有ping返回值证明成功。
docker run --rm -it busybox ping -6 -c4 ipv6-test.com
使用
如果使用的是dokcer-compose.yml,如果dokcer容器需要使用ipv6,则需要在配置文件中指定桥接网络模式
network_mode: bridge
如果使用docker run运行,也需要指定桥接网络模式。
--network=bridge