簡體   English   中英

如何從 docker 容器管理主機網絡命名空間

[英]How to manage hosts network namespaces from docker container

我的目標是使用在最新的 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 容器以便在其中運行的應用程序可以管理主機網絡命名空間嗎?

我發現的唯一解決方案是使用來自主機的綁定 /proc 啟動 docker 並使用 nsenter 更改掛載命名空間。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM