Linux 内核中提供了多个 namespace,用于隔离进程和资源。这些 namespace 包括:
1. PID namespace
PID namespace 允许每个进程在自己的 namespace 中拥有独立的 PID(进程 ID),从而隔离进程与进程之间的关系,防止进程访问和干扰其他进程的状态。
2. Mount namespace
Mount namespace 允许每个进程在自己的 namespace 中拥有独立的文件系统挂载点,从而隔离进程与进程之间的文件系统操作,保证每个进程可以独立使用自己的文件系统视图。
3. UTS namespace
UTS namespace 允许每个进程在自己的 namespace 中拥有独立的主机名和 NIS 域名,从而隔离进程与进程之间的网络通信和系统信息的访问。
4. Network namespace
Network namespace 允许每个进程在自己的 namespace 中拥有独立的网络接口、路由和防火墙规则,从而隔离进程与进程之间的网络数据流和安全性。
5. User namespace
User namespace 允许每个进程在自己的 namespace 中拥有独立的用户和组 ID,从而隔离进程与进程之间的访问权限,保证每个进程可以独立运行。
除了以上列出的 namespace 之外,还有 IPC namespace 和 Cgroup namespace 等。
这些 namespace 是 Linux 容器技术的基础,通过使用 namespace 技术,可以为每个容器分配独立的资源,从而实现隔离和资源管理。