办法

办法一、Pv6地址

不为容器中的服务特地调配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地址段。

systemctl reload docker

(4)应用systemctl restart docker命令重启Docker。
(5)应用ifconfig命令查看调配到Docker网络的IPv6地址段
(6)实现了下面的配置之后,无需特意配置,只需失常建设容器,即可为容器调配IPv6地址。能够应用“docker inspect容器名”查看容器的IP地址。

官网教程

启用ipv6

Edit /etc/docker/daemon.json, set the ipv6 key to true and the fixed-cidr-v6 key to your IPv6 subnet. In this example we are setting it to 2001:db8:1::/64.

{  "ipv6": true,  "fixed-cidr-v6": "2001:db8:1::/64"}Save the file.Reload the Docker configuration file.$ systemctl reload docker

启用内部转发

https://docs.docker.com/netwo...

Enable forwarding from Docker containers to the outside world
By default, traffic from containers connected to the default bridge network is not forwarded to the outside world. To enable forwarding, you need to change two settings. These are not Docker commands and they affect the Docker host’s kernel.

Configure the Linux kernel to allow IP forwarding.

$ sysctl net.ipv4.conf.all.forwarding=1

Change the policy for the iptables FORWARD policy from DROP to ACCEPT.

$ sudo iptables -P FORWARD ACCEPT

These settings do not persist across a reboot, so you may need to add them to a start-up script.

创立本人的 ip6 网卡

开启ip6网卡后,只有 bridge 网卡,会主动启用 ip6

创立 user ip6 网卡

docker network create -d bridge --subnet 172.30.20.0/24 mynet2  --ipv6docker 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# 须要仿照 bridge 的信息进行配置docker inspect 37da   {      "Subnet": "2001:db8:1::/64",      "Gateway": "2001:db8:1::1"   }docker network create -d bridge --ipv6 --subnet "2001:db8:2::/64" --gateway="2001:db8:2::1" --subnet=172.30.20.0/24 mynet2绑定本人的容器到 自定义的网卡docker run -d -p 30080:80 --net mynet2 nginx$ sysctl net.ipv6.bindv6only = 1$ sysctl net.ipv6.conf.default.forwarding=1$ sysctl net.ipv6.conf.all.forwarding=1docker network create -d bridge --ipv6 --subnet "2001:db8:3::/64" --gateway="2001:db8:3::1" --subnet=172.30.30.0/24 mynet3docker run -d -p 30080:80 --net mynet3 nginx

如果须要 间接依据 ip 拜访容器 须要 减少 路由配置

ip -6 route 查看路由直达# 定向 2001:db8:1::/64 ip6 到 docker0 网卡设施ip -6 route add 2001:db8:1::/64 dev docker0

暂停 删除所有

docker stop $(docker ps -a -q)docker rm $(docker ps -a -q)