mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
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。
40 lines
2.0 KiB
Go
40 lines
2.0 KiB
Go
## 本章小结
|
||
|
||
本章深入介绍了 Docker 的底层实现,包括命名空间、控制组和联合文件系统三大核心技术。
|
||
|
||
| 技术 | 作用 | 要点 |
|
||
|------|------|------|
|
||
| **Namespace** | 资源隔离 | Docker 默认启用 PID、NET、MNT、UTS、IPC(cgroup v2 主机上还有 Cgroup);USER 默认**不**启用,Time 未被使用 |
|
||
| **Cgroups** | 资源限制 | 限制 CPU、内存、磁盘 I/O、进程数 |
|
||
| **Union FS** | 分层存储 | 镜像分层与 Copy-on-Write 是核心;Engine 29 新装默认 containerd image store,overlay2 是经典 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` |
|
||
|
||
### 延伸阅读
|
||
|
||
- [命名空间](12.2_namespace.md):资源隔离机制详解
|
||
- [控制组 (Cgroups)](12.3_cgroups.md):资源限制机制
|
||
- [联合文件系统](12.4_ufs.md):分层存储的实现
|
||
- [安全](../18_security/README.md):容器安全实践
|
||
- [镜像](../02_basic_concept/2.1_image.md):理解镜像分层
|
||
- [容器](../02_basic_concept/2.2_container.md):容器存储层
|
||
- [构建镜像](../04_image/4.5_build.md):Dockerfile 层的创建
|
||
---
|
||
|
||
> 📝 **发现错误或有改进建议?** 欢迎提交 [Issue](https://github.com/yeasy/docker_practice/issues) 或 [PR](https://github.com/yeasy/docker_practice/pulls)。
|