Part III · 汇成一朵云 · 第 7 章
07

容器:轻量的幻觉

容器不启动另一套内核。它把普通进程放进 namespace 与 cgroup 编织的边界里,让它看见一个被裁剪过的世界。

难度 云核心 用时 约 50 分钟 交互 容器启动路径 · 隔离强度取舍 路线 螺旋式:先抓大图,再深入机制

0先把地图摊开

容器不启动另一套内核。它把普通进程放进 namespace 与 cgroup 编织的边界里,让它看见一个被裁剪过的世界。 本章不会把概念排成术语表,而是沿着一条真实系统路径走:先看它解决什么痛点,再看 OS/云平台怎样实现,最后回到工程取舍。

Namespace改变进程能看见什么:进程号、网络、挂载点、主机名等。
cgroup限制进程能用多少:CPU、内存、I/O 等资源配额。
镜像层容器镜像由只读层叠起来,启动时加一个可写层。
运行时负责拉镜像、设置隔离、启动容器进程的系统组件。
容器:轻量的幻觉 · 核心流程 分步动画 点击节点或用键盘 ← →
图 7.1核心机制路径。把这一章最容易散掉的流程压成可播放的五步。

7.1容器首先是进程

如果你只记一句:容器不是小虚拟机,而是被隔离和限制的进程。它共享宿主机内核,所以启动快、密度高,也意味着内核隔离边界比 VM 更薄。

7.2Namespace 改变“看见的世界”

PID namespace 让容器里的进程以为自己是 1 号进程;network namespace 给它独立网卡和路由表;mount namespace 让它看到自己的文件系统。幻觉来自视野被重写。

7.3cgroup 改变“能用的资源”

如果 namespace 是视觉隔离,cgroup 就是预算控制。CPU share、memory limit、I/O throttle 让容器不会无边界地吃掉宿主资源。

7.4镜像让环境可复制

镜像把文件系统和依赖固定成层。层的复用让发布快,digest 让内容可验证。Dockerfile 不是部署脚本,而是构造可重复运行环境的配方。

7.5容器为什么适合云原生

因为它启动快、打包清晰、资源边界明确,适合被调度器成批创建、销毁、替换。Kubernetes 的 Pod,本质就是容器加上一层调度与网络约定。

容器:轻量的幻觉 · 取舍实验 可玩模拟器 切换策略,看指标怎么变
图 7.2工程取舍。云和 OS 的概念真正进入工程时,几乎都不是“选最好”,而是在约束之间找一个诚实的点。

云与 OS 的桥

这一章不是孤立知识点。下面这张表把它和前后章节接起来:你会看到,同一个机制在单机、云平台和 AI 基建里会换名字,但问题结构没变。

本章机制云上形态为什么重要
NamespacePod 网络、sidecar、service mesh很多 Kubernetes 行为都是 namespace 组合的结果。
cgrouprequests/limits、OOMKilled资源配置错误会直接变成调度和稳定性问题。
镜像层CI/CD、供应链安全可复现环境同时带来版本、漏洞和 provenance 问题。
深潜 读完本章后,怎么确认自己真的懂了?

不要只背定义。你应该能把一个线上现象翻译回机制:慢在哪里、谁在排队、哪个抽象漏了、哪个资源被过度承诺。下面三个检查点可以当成小作业。

本章收束 · 你现在握住了什么

  • 容器是被 namespace 隔离、被 cgroup 限制的进程。
  • 它共享宿主内核,所以比 VM 轻,也比 VM 隔离边界薄。
  • 镜像层让环境可复制,是云原生发布的基本单位。
  • Kubernetes 在容器之上提供调度、网络和自愈约定。

容器和 VM 都要接请求。下一章我们把网络铺开,看请求怎样在云里找到正确的目标。