无法ping通docker的IPv6容器

我运行了docker守护进程,将其与全局IPv6一起用于容器:

docker daemon --ipv6 --fixed-cidr-v6="xxxx:xxxx:xxxx:xxxx::/64" 

之后,我跑docker集装箱:

 docker run -d --name my-container some-image 

它成功地获得了全球IPv6地址(我通过docker inspect my-container )。 但我不能通过这个IP来ping我的容器:

 Destination unreachable: Address unreachable 

但是我可以通过它的IPv6地址成功ping通docker0网桥。 route -n -6输出包含下一行:

  Destination Next Hop Flag Met Ref Use If xxxx:xxxx:xxxx:xxxx::/64 :: U 256 0 0 docker0 xxxx:xxxx:xxxx:xxxx::/64 :: U 1024 0 0 docker0 fe80::/64 :: U 256 0 0 docker0 

docker0接口有全球IPv6地址:

 inet6 addr: xxxx:xxxx:xxxx:xxxx::1/64 Scope:Global 

xxxx:xxxx:xxxx:xxxx:: everywhere是相同的,它是我的eth0接口的全局IPv6地址

docker需要额外的configuration通过IPv6访问我的容器?

MB你使用错误的ping命令。 对于ipv6是ping6。

 $ ping6 2607:f0d0:1002:51::4 

假设您的客户操作系统中的IPv6configuration正确,可能是您不是从主机操作系统ping容器,而是外部和networking发现协议未configuration。 其他主机不知道你的容器是否在主机的后面。 我在启动容器与IPv6(在主机操作系统)后(在Systemd .service文件的ExecStartPost子句中)

  1. / usr / sbin / sysctl net.ipv6.conf。 interface_name .proxy_ndp = 1
  2. / usr / bin / ip -6 neigh add proxy $(docker inspect –format {{.NetworkSettings.GlobalIPv6Address}} container_name )dev interface_name

小心IPv6:docker开发人员在回复错误报告时说,他们没有足够的时间在版本1.10中做好IPv6生产准备,对于1.11没有提及。