Files
docker_practice/12_implementation/summary.md
T
yeasy 08e981018e fix(content): 修正四处书内自相矛盾的技术断言
1. FROM「必须是第一条指令」(4.5、7.16、summary 三处)与本书 7.7.4「FROM 之前的
   ARG」整节直接冲突。官方 Dockerfile 参考写的是 "A Dockerfile must begin with a
   FROM instruction. This may be after parser directives, comments, and globally
   scoped ARGs",且 "ARG is the only instruction that may precede FROM"。三处
   一并改成「第一条构建指令」并点明例外。

2. 12 章小结把 USER Namespace 列进「默认启用」的一档,并写「容器 root ≠ 宿主机
   root」;而同章 12.2.2 明写 USER Namespace 默认**不**启用、需 userns-remap 显式
   开启,18.1 更直说「在默认情况下,容器内的 root 用户(UID=0)就是宿主机上的
   root 用户」。小结按正文口径改回——这条读反了会直接误判容器逃逸的风险面。

3. 11.5「目前支持三种日志驱动类型」是 Compose 早期文本的残留。官方支持 json-file、
   local、syslog、journald、gelf、fluentd、awslogs、splunk、etwlogs、gcplogs、
   none 共十余种,本书 19 章小结自己就列了六种。改为给出常见取值并链到官方清单。

4. 7.8 与 7.5 的示例注释建议 postgres:latest / redis:latest,而 4.1、7.10、
   7.16、7 章小结、4.5 全都要求避免 latest(7.8 同一文件第 177 行也写「避免
   latest」)。按全书口径改掉这两处。

另:ENV 的空格分隔旧写法(7.6 的「格式一」、附录四的 PG_MAJOR/PATH 示例)改为等号
形式并加注。BuildKit 的 LegacyKeyValueFormat 检查会报
"ENV key=value" should be used instead of legacy "ENV key value" format,
而本书 10.2 与 07 章 README 正是在推荐 docker buildx build --check。
2026-08-07 23:26:12 -07:00

2.0 KiB
Raw Blame History

本章小结

本章深入介绍了 Docker 的底层实现,包括命名空间、控制组和联合文件系统三大核心技术。

技术 作用 要点
Namespace 资源隔离 Docker 默认启用 PID、NET、MNT、UTS、IPCcgroup v2 主机上还有 Cgroup);USER 默认启用,Time 未被使用
Cgroups 资源限制 限制 CPU、内存、磁盘 I/O、进程数
Union FS 分层存储 镜像分层与 Copy-on-Write 是核心;Engine 29 新装默认 containerd image storeoverlay2 是经典 graph driver 场景的主要后备
Namespace 隔离内容 一句话说明
PID 进程 ID 容器有自己的进程树
NET 网络 容器有自己的 IP 和端口
MNT 文件系统 容器有自己的根目录
UTS 主机名 容器有自己的 hostname
IPC 进程间通信 容器间 IPC 隔离
USER 用户 ID 启用 userns-remap 后容器 root 才 ≠ 宿主机 root;默认不启用
资源 限制参数 示例
内存 -m -m 512m
CPU 核心数 --cpus --cpus=1.5
CPU 绑定 --cpuset-cpus --cpuset-cpus="0,1"
磁盘 I/O --device-write-bps --device-write-bps /dev/sda:10mb
进程数 --pids-limit --pids-limit=100

延伸阅读


📝 发现错误或有改进建议? 欢迎提交 IssuePR