dev.to | 📄 原文链接 | 2026-10-23 收录

容器不是小虚拟机:命名空间、控制组与分层文件系统在做什么

来源:dev.to — 2026-10-22

📋 概述

几乎所有人解释容器时都会画两张塔:左边虚拟机有客户机内核和管理程序,右边容器只有一个瘦盒子。作者说这个模型适合放幻灯片,但它完全错了——Linux 内核里根本没有名为 container 的数据结构,你去内核源码里搜 struct container 什么也找不到。你在宿主机上跑 ps aux 就能看到 nginx 的进程直接由宿主机内核调度、用宿主机的物理内存,没有管理程序,也没有客户机内核。容器的真实定义是:一个普通的用户态 Linux 进程,戴上一副眼罩(命名空间)、拿着一份配额(控制组)、看着一层叠起来制造出来的文件系统(OverlayFS)。文章顺着 docker run 一路讲到 runc:OCI 运行时的分层、命名空间如何隔离 PID 与网络与挂载、控制组 v2 怎么限制 CPU 与内存、OverlayFS 如何用写时复制叠镜像层。

🔑 核心要点

💡 金句

A container is an ordinary Linux process running in user space, wearing a pair of blinders (Namespaces), operating on a strict allowance (Control Groups), and looking at a layered illusion of files (OverlayFS).
译:容器就是一个跑在用户态的普通 Linux 进程,戴着眼罩(命名空间),拿着一份严格配额(控制组),看着一层叠出来的文件幻觉(OverlayFS)。
← 返回 dev.to 首页