命名空间是一种全局资源抽象,命名空间内某一个进程对全局资源状态的改变,处于同一命名空间的进程可以看到,但是处于不同命名空间的进程却看不到。
NameSpace类型
值得注意的是第二列是使用clone,unshare等系统调用时需要使用的flag
| Namespace | Flag | Page | Isolates |
|---|---|---|---|
| Cgroup | CLONE_NEWCGROUP | cgroup_namespaces(7) | Cgroup root directory |
| IPC | CLONE_NEWIPC | ipc_namespaces(7) | System V IPC, POSIX message queues |
| Network | CLONE_NEWNET | network_namespaces(7) | Network devices,stacks, ports,etc. |
| Mount | CLONE_NEWNS | mount_namespaces(7) | Mount points |
| PID | CLONE_NEWPID | pid_namespaces(7) | Process IDs |
| Time | CLONE_NEWTIME | time_namespaces(7) | Boot and monotonic clocks |
| User | CLONE_NEWUSER | user_namespaces(7) | User and group IDs |
| UTS | CLONE_NEWUTS | uts_namespaces(7) | Hostname and NIS domain name |
Namespace系统API
clone
如果指定了CLONE_NEW*标志位,则将创建的子进程放入到命名空间中。
setns(2)
将进行setns系统调用的进程放入到已存在命名空间。
unshare(2)
将进行unshare系统调用的进程放到命名空间。如果命名空间不存在,则会创建。