576 字
2 分钟
容器运行时深入系列导读
docker run 一条命令背后,是四个进程、三个抽象层、两个规范的精密协作。Namespace 做视图隔离,Cgroup 做资源限制,OverlayFS 做分层文件系统,三块内核基石拼出容器的底层。在此之上,OCI 规范定义镜像和运行时的标准接口,runc 是参考实现,containerd 是工业级管理器,shim 解耦容器生命周期与 daemon 进程。本系列沿着这条主线从内核机制走到工业实现,再覆盖安全、网络、镜像构建三个运行时核心维度。
排查容器问题时要读 runc 代码、看 containerd 日志、改 seccomp 过滤规则,前提是先搞懂这些组件各自干什么、怎么协作。这个系列就是把这条链路拆开讲清楚。
系列预期
- 建立从内核机制到工业实现的完整认知链:Namespace/Cgroup/OverlayFS → OCI 规范 → runc → containerd → shim → 完整调用链 → 安全/网络/构建
- 每章配有可运行的代码示例和架构图,读完能动手验证
定位边界
本系列聚焦运行时本体,不讲 docker-compose 编排、K8s 调度策略等上层使用,也不逐行分析 Linux 内核源码,只在必要时下钻内核实现细节。
知识准备
- Linux 系统编程基础:系统调用、进程管理、文件系统操作
- Docker 基本操作:
docker run/build/pull,理解镜像和容器的关系 - Go 语言阅读能力:runc 和 containerd 都是 Go 实现,源码分析部分需要能读 Go 代码
- 网络基础:TCP/IP、路由、iptables 基本概念(容器网络章节需要)
推荐书目和教程
- Containers from Scratch - Liz Rice,用 Go 从零构建容器,理解容器本质的入门首选
- Linux Kernel Development - Robert Love,内核开发基础,理解 Namespace/Cgroup 的内核实现
- OCI Runtime Specification - OCI 运行时规范完整定义
- runc 源码 - OCI Runtime 参考实现
- containerd 文档 - containerd 架构设计与开发指南
- Cgroup v2 内核文档 - Cgroup v2 官方文档
- Linux Namespace Man Page - Namespace 系统调用手册
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
部分信息可能已经过时
相关文章 智能推荐
1
容器完整流程:docker run 背后
容器运行时 当你执行 docker run nginx 时,背后发生了什么?本章完整追踪从 Docker CLI 到容器进程启动的每一步,镜像拉取、OCI Bundle 生成、shim 启动、runc 创建、Namespace/Cgroup/OverlayFS 配置、容器进程执行,让你对 docker run 的每一步都了如指掌。
2
容器全景:从 chroot 到 OCI
容器运行时 从 1979 年的 chroot 到 2015 年的 OCI 标准,容器技术走过了三十多年的演进之路。本章梳理这条脉络,并辨析容器与虚拟机、容器进程与普通进程、镜像与容器与 Bundle 几组核心概念,为后续深入打下认知基础。
3
什么是容器?
技术科普 容器不是"更轻的虚拟机",它是一种完全不同的隔离哲学。从 chroot 的局限到 Namespace + cgroups 的组合拳,从 Docker 的范式转变到 Kubernetes 的编排革命,理解容器为什么这样设计,才能知道什么时候该用它、什么时候不该。
4
认识 Kubernetes:前世今生
云原生 从云计算商业模式的演进出发,梳理容器化技术(LXC → Docker)和 Kubernetes 的诞生背景、核心设计理念及架构概述,理解 K8s 解决了什么核心问题。
5
Docker 从入门到实践
工具 不搬运官方文档,只讲实战中真正会踩的坑:Dockerfile 最佳实践、Compose 多环境编排、CI/CD 集成,以及 OOM、磁盘迁移等问题排查。






