第3章 运行时层:容器隔离双引擎


第 3 章 · 运行时层:容器隔离双引擎

章节摘要:容器的一切行为差异都源自运行时层的两台引擎——namespace 负责让进程"看不见",cgroup 负责"用不多"。本章逐台拆解:六种常用 namespace 各自隔离什么,cgroup 如何计量与限流,容器生命周期命令在进程层面的真实含义。读完本章,容器在你眼里将彻底还原为一组带限制的普通进程。

学习目标

  1. 列出六种常用 namespace 及各自隔离的资源维度
  2. 用宿主机命令直接观测容器进程的 namespace 归属
  3. 说清 cgroup v1 与 v2 的结构差异及 Docker 的内存、CPU 限制参数
  4. 解释 docker stop 的信号机制与优雅退出的条件
  5. 排查"容器一启动就退出"与"容器杀不掉"两类高频故障

核心概念速览

namespace 是给进程戴的眼罩,cgroup 是给进程戴的手铐;眼罩让它看不见别人,手铐让它拿不动太多。

隔离双引擎分工图

隔离双引擎分工图

子章节导航

3.1 namespace 隔离机制

六种 namespace 逐个拆开,用宿主机上的 lsns、nsenter 亲手进出容器的命名空间,理解"容器里的 1 号进程"是怎么来的。

3.2 cgroup 资源限制

从内存上限到 CPU 配额,看 cgroup 如何记账与执法,搞懂 OOMKilled 与 CPU 限流两种"死法"的本质区别。

3.3 容器生命周期与进程模型

start、stop、kill、pause 在进程层面各做了什么,PID 1 的信号困境与僵尸进程问题,以及前台进程为什么是容器的命。

子章节之间的逻辑关系

3.1 与 3.2 是并列的两台引擎,前者管视野后者管配额;3.3 把两台引擎装回生命周期命令里,解释日常操作在进程层面的真实动作。

namespace 管看见什么(3.1) cgroup 管用掉多少(3.2) | v 生命周期命令 = 进程操作 + 信号(3.3) ​

前置知识与后续延伸

  • 前置:第 1 章"容器即进程"的验证实验,第 2 章镜像层提供的根文件系统
  • 为后续铺垫:NET namespace 直接引出第 4 章网络层;cgroup 数据是第 7 章监控的核心指标来源;PID 1 信号机制是第 7 章优雅退出排错的原理基础
作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U