`ip netns` 和 `unshare` 如何保存它们的持久网络命名空间?他们可以互相利用吗?

Lia*_*lly 8 network-programming namespaces docker kubernetes linux-namespaces

要与您一起创建持久名称空间,unshare请使用以下语法:

touch /root/mynetns1
unshare --net==/root/mynetns1
Run Code Online (Sandbox Code Playgroud)

要与您一起创建持久名称空间,ip请使用以下语法:

ip netns add mynetns2
Run Code Online (Sandbox Code Playgroud)

ip命令不会列出或可以访问由 所创建的命名空间unshare,反之亦然。

ip命令更擅长自定义网络命名空间,但该unshare命令允许您启动具有多个不同命名空间的程序。理想情况下,我会使用 来创建一个命名空间ip,但使用其他命名空间来启动该命令unshare。为此,unshare需要能够引用由 创建的命名空间ip,如何做到这一点?

现在我正在使用ip netns exec mynetns1 unshare [other namespaces] ...作为黑客,但我更喜欢使用unshare.

我还希望能够让我的程序与他们单独创建的网络命名空间进行交互,因此有关如何列出和访问其网络命名空间的信息也会很有帮助。

Jos*_*ica 7

两者unshare --net=/somefileip netns add somename创建一个新的网络命名空间并将其绑定安装到某个地方。唯一的区别是unshare绑定将其安装到您指定的任何文件,并将ip其绑定安装到/var/run/netns/. 换句话说,如果您使用/var/run/netns/mynetns1代替/root/mynetns1,那么您稍后可以使用 与它进行交互ip