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