1. Linux namespace 的 Mount、PID、Network、UTS、IPC、User 六种
列举 Linux 的六种 namespace(Mount、PID、Network、UTS、IPC、User),并说明各自隔离的内容?
- 理解每种 namespace 的隔离对象
- 理解 namespace 的创建接口(clone/unshare)
- 理解容器隔离的基础
Linux 的 namespace 提供进程视角的隔离,使进程拥有独立的资源视图。六种经典 namespace:Mount(mnt)隔离挂载点,使进程看到不同的文件系统挂载树;PID 隔离进程 ID,使进程拥有独立的 PID 命名空间(可见独立的 PID 1);Network(net)隔离网络栈(网卡、IP、路由、socket),使进程拥有独立的网络环境;UTS 隔离主机名与域名(hostname);IPC(ipc)隔离进程间通信(System V IPC、POSIX 消息队列等);User(user)隔离 UID/GID 映射,允许非 root 用户拥有虚拟 root 权限。它们通过 clone(CLONE_NEW*) 或 unshare 创建,通常组合用于容器(如 Docker 组合 mnt/pid/net/uts/ipc/user 等)。加上 Time(5.6)共七种及 cgroup namespace。namespace 是"视图隔离",只改变进程看到的资源,不限制资源用量。
namespace 是"视图隔离"的基石,每种隔离一个资源维度。理解六种 namespace 的职责与创建接口,是理解容器隔离原理的基础。