如何在 Ubuntu 14.04 中使用带有 IPv6 的“docker.io”容器?

如何在 Ubuntu 14.04 中使用带有 IPv6 的“docker.io”容器?

我正在尝试这个:

在装有 Ubuntu 14.04(容器的 IPv6 和 IPv4 网关)的物理主机上,我尝试:

root@docker-srv-1:~# ip -6 a a 2804:XXX:4:acbd::1/64 dev docker0

当然,主机 docker-srv-1 可以“ping6 google.com”,并且子网 2804:XXX:4:abcd::/64 已路由到它。我现在可以从世界上任何地方(容器的 IPv6 网关(docker0 接口))“ping6 2804:XXX:4:acbd::1”。

稍后,我计划直接在 docker0 接口上运行 radvd,这样容器就会自动生成自己的 SLAAC IPv6 地址(我相信它会,如果先静态工作的话)。

root@docker-srv-1:~# docker.io run -t -i tmartinx/ubuntu-14.04-server-cloudimg /bin/bash

但是,在容器内:

root@112c9071041a:/# ip -6 a a 2804:XXX:4:acbd::20/64 dev eth0
RTNETLINK answers: Operation not permitted

我也尝试过:

root@docker-srv-1:~# docker.io run --lxc-conf="lxc.network.ipv6=2804:XXX:4:acbd::20/64" --lxc-conf="lxc.network.ipv6.gateway=2804:XXX:4:acbd::1" -d -e lxc -t -i tmartinx/ubuntu-14.04-server-cloudimg /bin/bash 

235d2bea7d9b4cc54d08c6eb9e623e5655ac4e1668a9a7e255e796d254ce4845
2014/04/22 00:50:08 Error: Cannot start container 235d2bea7d9b4cc54d08c6eb9e623e5655ac4e1668a9a7e255e796d254ce4845: lxc.network.ipv6 = 2804:XXX:4:acbd::20/64 is not supported by the native driver

我在这里找到了一些提示:http://zargony.com/2013/10/13/ipv6-in-docker-containers— 但它不起作用... :'(

我也尝试使用“-d -e lxc”来运行 docker.io,但是它也无法与 IPv6 配合使用......

我是否遗漏了什么?!


编辑 #1:

现在我正在使用 --privileged 运行 docker.io,如下所示:

docker.io run --privileged -t -i tmartinx/ubuntu-14.04-server-cloudimg /bin/bash

因此,我可以运行“ip -6 aa $IPV6_ADDR”,但是,仍然无法 ping 通它的网关(本地可访问的 docker0 int - IPv4 有效),当然,根本没有 IPv6 连接......

来源:

IPV6 地址 https://github.com/dotcloud/docker/issues/4483


编辑#2:

经过进一步研究后,我做到了:

sudo apt-get install lxc

在 /etc/default/docker.io 中添加以下行:

DOCKER_OPTS="-d -e lxc"

Docker 重新启动了,但是仍然没有 IPv6...无论如何,错误消息现在不同了,看:

root@docker-srv-1:~# docker.io run --lxc-conf="lxc.network.ipv6=2804:XXX:4:acbd::20/64" --lxc-conf="lxc.network.ipv6.gateway=2804:XXX:4:acbd::1" -t -i tmartinx/ubuntu-14.04-server-cloudimg /bin/bash
lxc-start: Cannot add ipv6 gateway for eth0 when not bringing up the interface
lxc-start: failed to setup netdev
lxc-start: failed to setup the network for '5c7d1765a7a93bff96711865ebd9325b9b9bf071e89c466fe1ae75a336af10f8'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn '5c7d1765a7a93bff96711865ebd9325b9b9bf071e89c466fe1ae75a336af10f8'
2014/04/22 04:58:25 Error: Cannot start container 5c7d1765a7a93bff96711865ebd9325b9b9bf071e89c466fe1ae75a336af10f8: exit status 1

编辑 #3

带有 IPv6 的 Docker 现在可以运行了!我做了什么?

安装lxc(EDITED #2) 并重新配置 DOCKER_OPTS 以启用它之后,带有 IPv6 的 Docker 可以使用以下命令:

docker.io run --privileged --lxc-conf="lxc.network.ipv6 = 2804:XXX:4:acbd::200/64" --lxc-conf="lxc.network.ipv6.gateway = 2804:XXX:4:acbd::1" --lxc-conf="lxc.network.flags = up" -t -i tmartinx/ubuntu-14.04-server-cloudimg /bin/bash

如果其他人有更好的解决方案,请发布!

谢谢!

蒂亚戈

相关内容