Linux Namespaces
核心概念
Namespace = 隔离系统资源
容器的本质就是受限的 Linux 进程
Namespace 类型
| 类型 | 隔离内容 |
|---|---|
| PID | 进程 ID |
| NET | 网络栈 |
| MNT | 文件系统挂载 |
| UTS | 主机名 |
| IPC | 进程间通信 |
| USER | 用户 ID |
| CGROUP | cgroup 根目录 |
查看 Namespace
# 查看进程的 namespace
ls -la /proc/$$/ns/
# 查看容器的 namespace
docker inspect --format='{{.State.Pid}}' my-app
ls -la /proc/<PID>/ns/
手动创建 Namespace
# 使用 unshare 命令
unshare --pid --net --mount --uts --ipc --fork /bin/sh
小结
| Namespace | 隔离 |
|---|---|
| PID | 进程 ID 空间 |
| NET | 网络 |
| MNT | 文件系统 |
| UTS | 主机名 |