如何从docker容器

时间:2018-02-06 23:47:16

标签: linux docker networking namespaces

我的目标是使用在最新的docker容器(版本17.12)中运行的应用程序来管理主机上的网络命名空间。

我尝试使用以下选项启动docker容器:

docker run -ti --entrypoint=/bin/bash --network=host --pid=host --    
privileged --cap-add ALL -v /run:/run debian

这允许我在主机上创建网络命名空间,但是一旦容器被销毁,从容器内创建的网络命名空间仍然可见,但我无法使用它们。

container # ip netns add test
container # exit
host # ip netns
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
test
testhost
host # ip netns exec test ip addr
setting the network namespace "test" failed: Invalid argument

知道如何启动docker容器,以便在其中运行的应用程序可以管理主机网络命名空间吗?

1 个答案:

答案 0 :(得分:1)

我找到的唯一解决方案是从主机启动带有绑定/ proc的docker,并使用nsenter更改mount命名空间。

host # docker run .... -v /proc:/host/proc /bin/bash
container # nsenter --mount=/host/proc/1/ns/mnt ip netns add test