据我所知,我可以使用“clone”来创建进程和命名空间,但以这种方式创建的命名空间没有名称。例如,我使用参数:CLONE_NEWNS创建网络命名空间,但在命令“ip netns list”中,没有命名空间列表,因为创建的命名空间没有名称。但我可以使用命令“ip netns add xxx”来创建名为“xxx”的命名空间。
我想知道如何使用系统调用“clone”创建名称命名空间。
答案 0 :(得分:5)
创建从/var/run/netns/<name>
到/proc/<pid>/ns/net
的符号链接,其中<pid>
是使用CLONE_NEWNS
创建的流程的PID,而<name>
是您的名称想用来引用网络命名空间。
请注意,ip link set netns
命令将接受PID或名称,nsenter
命令也可以通过PID访问命名空间,因此您实际上可能不需要为网络分配名称命名空间。