Linux 的 Namespaces(命名空间) 是实现隔离的核心机制,让不同进程“看到”的系统视图不同。以下是主要类型的作用(通俗版):
PID Namespace→ 隔离进程 ID。在新空间里,你的进程 PID 从 1 开始,看不到主机其他进程。
User Namespace→ 隔离用户/组 ID。容器里 root(UID 0)可映射为主机普通用户,提升安全性。
Mount Namespace→ 隔离文件系统挂载点。你在里面挂载/卸载不影响主机,实现“私有文件视图”。
UTS Namespace→ 隔离主机名和域名。容器里可设自己的 hostname,不影响主机。
IPC Namespace→ 隔离进程间通信资源(如共享内存、消息队列),避免不同容器互相干扰。
Network Namespace→ 隔离网络设备、IP、端口、路由表等。每个空间有独立网络栈(如 Docker 容器网络)。
Cgroup Namespace(较新)→ 隔离 cgroups 视图,让容器内看到自己的资源限制路径(如 /sys/fs/cgroup),增强安全性。
打个比方:Namespaces 就像给每个进程配一副“定制眼镜”,让它看到的是一个独立的小世界,而实际大家还在同一台电脑上。它们是 容器(如 Docker)的基础,配合 cgroups 实现资源限制 + 视图隔离。
网友回复


