Linux Namespace

128 阅读1分钟

命名空间是一种全局资源抽象,命名空间内某一个进程对全局资源状态的改变,处于同一命名空间的进程可以看到,但是处于不同命名空间的进程却看不到。

NameSpace类型

值得注意的是第二列是使用clone,unshare等系统调用时需要使用的flag

NamespaceFlagPageIsolates
CgroupCLONE_NEWCGROUPcgroup_namespaces(7)Cgroup root directory
IPCCLONE_NEWIPCipc_namespaces(7)System V IPC, POSIX message queues
NetworkCLONE_NEWNETnetwork_namespaces(7)Network devices,stacks, ports,etc.
MountCLONE_NEWNSmount_namespaces(7)Mount points
PIDCLONE_NEWPIDpid_namespaces(7)Process IDs
TimeCLONE_NEWTIMEtime_namespaces(7)Boot and monotonic clocks
UserCLONE_NEWUSERuser_namespaces(7)User and group IDs
UTSCLONE_NEWUTSuts_namespaces(7)Hostname and NIS domain name

Namespace系统API

clone

如果指定了CLONE_NEW*标志位,则将创建的子进程放入到命名空间中。

setns(2)

将进行setns系统调用的进程放入到已存在命名空间。

unshare(2)

将进行unshare系统调用的进程放到命名空间。如果命名空间不存在,则会创建。