要使用unshare
创建持久名称空间,请使用语法:
touch /root/mynetns1
unshare --net==/root/mynetns1
要使用ip
创建持久名称空间,请使用以下语法:
ip netns add mynetns2
ip
命令不列出或可以访问由unshare
创建的命名空间,反之亦然。
ip
命令在自定义网络名称空间方面要好得多,但unshare
命令允许您启动具有多个不同名称空间的程序。理想情况下,我会用ip
创建一个名称空间,但用unshare
启动其他名称空间的命令。要做到这一点,unshare
需要能够引用ip
创建的名称空间,这是如何做到的?
现在我使用ip netns exec mynetns1 unshare [other namespaces] ...
作为破解工具,但我更喜欢使用unshare
更干净地启动。
我还希望我的程序能够与他们单独创建的网络命名空间进行交互,因此有关如何列出和访问他们的网络命名空间的信息也会很有帮助。
unshare --net=/somefile
和ip netns add somename
都创建了一个新的网络名称空间,并将其绑定到某个位置。唯一的区别是unshare
绑定将它装载到您指定的任何文件,而ip
绑定将它安装到/var/run/netns/
中的一个新文件。换句话说,如果您使用/var/run/netns/mynetns1
来代替/root/mynetns1
,那么您以后可以使用ip
与它进行交互。