介绍:
ipv6是网际协议的最新版本,用作互联网的协议。用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进。IPv6的设计目的是取代IPv4,然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢。因此ipv6服务器相比ipv4服务器费用更低。
docker作为一个实力强大的开源的应用容器引擎,深受广大开发者的喜爱。新手刚开始用ipv6服务器配置docker和装一些镜像时会遇到一些错误。如docker默认是ipv4协议,当在docker里建立network时,端口映射是ipv4,而不是ipv6,所以需docker要开启ipv6。
docker配置开启ipv6:
这里用的是 Ubuntu 系统
通过修改daemon配置文件/etc/docker/daemon.json来开启和配置ipv6,与使用加速器
- “ipv6”: true => 开启ipv6
- “fixed-cidr-v6”: “2001:db8:bcc7:28f0:9090:aeae:f592:d222/64” => ipv6范围
- “registry-mirrors”: [] => 这里面配置docker镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:bcc7:28f0:9090:aeae:f592:d222/64",
"registry-mirrors": []
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
建个 ipv6 的network
普通建的 network 是ipv4协议,ipv6需要配置。
--ipv6
: 启用 IPv6 支持。--subnet
: 指定 IPv6 子网。--gateway
: 指定网关地址。- network_name :换成要建立的网络名称
docker network create --ipv6 --subnet 2001:db8:bcc7:28f1::/64 --gateway 2001:db8:bcc7:28f1::1 network_name
注意:上速命令可能会报错:
root@ser:~# docker network create --ipv6 --subnet 2001:db8:bcc7:28f0::/64 --gateway 2001:db8:bcc7:28f0::1 test
Error response from daemon: invalid pool request: Pool overlaps with other one on this address space
此时,选择使用不同的 IPv6 子网创建新网络即可
配置MySQL
MySQL默认是不开启ipv6的,这里需要开启。docker创建容器时分配上面创建的网络。
创建成功并启动后进入容器执行命令
使用 echo
或 printf
命令直接将配置追加到文件中
echo "bind-address = ::" >> /etc/mysql/my.cnf
然后重启MySQL就行了。此时,建立nginx容器分配ipv6网络后,服务器放行对应端口,外网也能访问了。