- 命名空间(Namespaces)→ 资源视图隔离(进程/网络/文件系统等)
- 控制组(cgroups) → 物理资源限制(CPU/内存/磁盘IO等)
- 视图切换(chroot)→ 文件系统根目录隔离
-
联合挂载文件系统(Union File Systems)→ 高效的分层存储和镜像管理
这些是 Linux 容器化技术的核心支柱,也是 Docker 实现隔离和资源管理的基础。
一、命名空间 (Namespaces)
核心目的:实现资源视图隔离
关键类型:
- PID:隔离进程树(容器内进程ID独立)
- NET:隔离网络栈(IP/端口/路由表独立)
- MNT:隔离文件挂载点
- IPC:隔离进程间通信
- UTS:隔离主机名
- User:隔离用户ID(root权限降级)
本质:为进程创建独立的系统资源视图
二、控制组 (cgroups)
核心目的:物理资源限制
关键能力:
资源类型 控制功能 示例参数
CPU 时间片分配/核心数限制 --cpus=1.5
内存 使用量/OOM优先级控制 --memory=500m
I/O 磁盘读写带宽限制 --device-read-bps
进程数 最大进程数量限制 --pids-limit=100
本质:通过/sys/fs/cgroup目录动态限制进程组资源
三、视图切换 (chroot/pivot_root)
核心目的:文件系统根隔离
实现方式:
- 将进程根目录切换到容器文件系统
- 现代Docker使用pivot_root替代chroot(防逃逸)
- 配合Mount命名空间实现完全隔离
本质:容器内只能看到自己的文件系统路径
四、联合挂载文件系统 (UnionFS)
核心目的:高效分层存储
核心机制:
···text
容器文件系统视图
├── upperdir (容器可写层 - RW)
└── lowerdir (镜像只读层 - RO)
└── 镜像层1
└── 镜像层2
└── ...
···
关键技术:
写时复制 (CoW):修改文件时复制到可写层
OverlayFS:现代Docker默认驱动(高性能)
分层管理:Dockerfile指令对应独立镜像层
本质:通过分层叠加实现镜像共享和快速部署
四者协同工作示意图:
+-------------------------------------------------------+
| Docker Container |
| +-----------------+ +-------------------------+ |
| | PID Namespace | | cgroups | |
| | (隔离进程) | | (限制CPU/内存等) | |
| +-----------------+ +-------------------------+ |
| |
| +-----------------------------------------------+ |
| | chroot/pivot_root | |
| | (文件系统视图切换) | |
| | +---------------------------------------+ | |
| | | UnionFS (Overlay2) | | |
| | | ┌──────────────────────┐ | | |
| | | │ Container RW Layer │ | | |
| | | └──────────────────────┘ | | |
| | | ┌──────────────────────┐ | | |
| | | │ Image Layer 3 (RO) │ | | |
| | | ├──────────────────────┤ | | |
| | | │ Image Layer 2 (RO) │ | | |
| | | ├──────────────────────┤ | | |
| | | │ Image Layer 1 (RO) │ | | |
| | | └──────────────────────┘ | | |
| | +---------------------------------------+ | |
| +-----------------------------------------------+ |
+-------------------------------------------------------+
核心价值总结:
技术 解决的核心问题 用户价值
Namespaces 资源视图隔离 安全沙箱(进程/网络隔离)
cgroups 物理资源竞争 稳定性保障(避免资源耗尽)
chroot 文件系统隔离 路径安全性(防止越权访问)
UnionFS 存储效率低下 快速部署/镜像共享/磁盘节省
四者共同实现:轻量级虚拟化(秒级启动)+ 强隔离性 + 高效资源利用