容器核心原理专栏导览
专栏定位
本专栏不是 Docker 使用教程。docker build、docker run、Dockerfile 编写——这些内容互联网上已经汗牛充栋。本专栏关注的是 Docker 和所有容器技术底层依赖的 Linux 内核机制:当你执行 docker run 时,操作系统层面到底发生了什么?
容器的本质是被 Linux 内核机制隔离和限制的进程。Docker 的历史贡献在于将 Linux Namespace、Cgroups、UnionFS 等分散的内核技术优雅地封装为标准化的产品体验,但 Docker 本身并没有发明任何新的隔离技术。理解这些内核机制,不仅能让你真正理解容器”为什么轻量”、“隔离边界在哪里”、“安全风险是什么”,更是后续学习 Kubernetes 的必备前置知识——K8s 的 Pod、资源限制、网络模型都直接建立在这些内核原语之上。
目录
| 序号 | 文章 | 核心内容 |
|---|---|---|
| 01 | 01 容器的本质——从进程隔离到 OCI 标准 | 容器 vs 虚拟机的本质区别、容器技术的演进(chroot → Jail → LXC → Docker → OCI)、OCI 规范、容器运行时层次(containerd / runc) |
| 02 | 02 Linux Namespace 深度解析 | 六大 Namespace(PID/Net/Mnt/UTS/IPC/User)的内核实现原理、clone/unshare/setns 系统调用、手动用 Namespace 构建一个”容器” |
| 03 | 03 Cgroups 资源限制与控制 | Cgroups v1 vs v2 架构差异、CPU/Memory/IO 控制器的限制机制、OOM Killer 与内存回收、Cgroups 在容器运行时中的应用 |
| 04 | 04 UnionFS 与容器镜像原理 | 联合文件系统的设计思想、OverlayFS 的分层机制(lowerdir/upperdir/merged)、Docker 镜像的分层存储与内容寻址、镜像构建与分发的工程原理 |
| 05 | 05 容器网络原理 | Network Namespace 与 veth pair、Linux Bridge 模型、容器的四种网络模式、Docker Bridge 网络的完整数据包路径、CNI 接口规范(为 K8s 网络铺垫) |
| 06 | 06 容器安全边界与逃逸风险 | 容器共享内核的安全隐患、Linux Capabilities 最小权限、Seccomp 系统调用过滤、AppArmor/SELinux MAC 策略、Rootless 容器、安全容器(gVisor/Kata) |
推荐阅读路径
- 快速理解容器本质:01 → 02 → 03
- 深入镜像与存储:01 → 04
- 容器网络(K8s 前置):02 → 05
- 安全加固:02 → 03 → 06
与后续专栏的关系
本专栏是 Kubernetes 专栏的硬性前置。K8s 中的以下核心概念直接依赖本专栏的知识:
| K8s 概念 | 依赖的容器内核知识 |
|---|---|
| Pod 的隔离模型 | Namespace 共享(同 Pod 容器共享 Net/IPC Namespace) |
resources.limits / resources.requests | Cgroups CPU/Memory 控制器 |
| 容器镜像拉取与存储 | UnionFS 分层、内容寻址、镜像分发 |
| Pod 网络与 Service | veth pair、Bridge、CNI |
| Pod Security Standards | Capabilities、Seccomp、AppArmor |
| containerd 作为容器运行时 | OCI 规范、containerd/runc 架构 |