fix(content): harden Docker practice guide

This commit is contained in:
yeasy
2026-06-16 21:23:21 -07:00
parent f4e684afeb
commit 9fdffa9d91
67 changed files with 343 additions and 278 deletions
+1 -1
View File
@@ -100,7 +100,7 @@ flowchart TD
Docker Engine v29.x 开始架构进一步简化和标准化
- **Containerd 镜像存储 (Image Store)** v29.x 的新安装场景中默认启用Docker 直接使用 Containerd 的镜像管理能力不再维护自己的一套 graphdriver
- **优势**多平台镜像支持更好镜像拉取更快 (lazy pulling) K8s 共享镜像
- **优势**多平台镜像支持更好可保存 SBOM/Provenance attestations并可使用 containerd snapshotters lazy pulling 等能力
- **实验性 nftables 支持**随着主流 Linux 发行版逐步弃用 iptablesDocker v29.x 引入了实验性 nftables 后端启用方式为 `dockerd --firewall-backend=nftables`可直接创建 nftables 规则而无需依赖 iptables-nft 转换层生产环境请谨慎使用
---
+7 -7
View File
@@ -92,11 +92,11 @@ Docker 的存储驱动经历了从早期各式各样的机制(如 aufs, device
| 存储后端 / 驱动 | 核心特性说明 | 推荐程度 |
|---------|------|---------|
| **containerd image store**| (v29.x 新一代默认后端新装默认) 基于 containerd snapshotters原生支持 OCI image index多架构镜像与 Attestations 构建溯源元数据存储 | **强烈推荐 (现代默认)** |
| **containerd image store**| (v29.x 新一代默认后端新装默认) 基于 containerd snapshotters原生支持 OCI image index多架构镜像与 Attestations 构建溯源元数据存储启用 `userns-remap` 时不可用 | **强烈推荐 (现代默认)** |
| **overlay2**| (经典 Graph Driver) 传统架构下的现代 Linux 默认驱动性能优秀但在处理复杂溯源元数据索引时受限 | **推荐 (主要后备)** |
| **aufs** | 早期默认兼容性好 | 遗留系统 |
| **aufs** | 早期默认已从现代 Docker Engine 移除 | 历史资料 |
| **btrfs**/**zfs** | 使用原生稳定文件系统快照能力 | 特定场景 |
| **devicemapper** | 块设备级存储 | 遗留系统 (已被逐步弃用) |
| **devicemapper** | 块设备级存储已从现代 Docker Engine 移除 | 历史资料 |
| **vfs** | 不使用 CoW每层完整复制 | 仅测试 |
#### Classic Graph Drivers Snapshotters 的核心差异
@@ -104,7 +104,7 @@ Docker 的存储驱动经历了从早期各式各样的机制(如 aufs, device
传统模型 `overlay2`将镜像拉取解包的过程由 Docker graph drivers 处理而新的 `containerd image store` 则将这一职责彻底下放给了 `containerd` 自身的 `snapshotters`底层在 Linux 发行版通常依然利用操作系统的 overlayfs这种架构改变带来了
1. 本地免拉取查看多平台镜像 index manifest attestations (SBOMProvenance)
2. 避免了以前绕过 CRI 获取本地镜像的问题带来更好的原生 Kubernetes 生态兼容性
2. 允许 Docker 使用 containerd snapshotters 管理镜像层便于与现代 OCI 生态能力对齐它不表示 kubelet/containerd 会自动复用 Docker 本地镜像Kubernetes 镜像分发仍应以 registry镜像拉取策略和运行时配置为准
#### 查看当前存储驱动与后端
@@ -114,14 +114,14 @@ $ docker info | grep "Storage Driver"
Storage Driver: overlay2
## 在 Engine v29.x 中,可以通过如下输出验证是否开启了 containerd 镜像后端:
$ docker info | grep "containerd image store"
containerd image store: true
$ docker info -f '{{ .DriverStatus }}'
[[driver-type io.containerd.snapshotter.v1]]
```
---
### 12.4.5 overlay2 工作原理
overlay2 是目前最推荐的存储驱动
在经典 graph driver 体系下overlay2 仍是 Linux 上的主要推荐驱动Docker Engine 29 新安装场景默认走 containerd image store/snapshotter
```mermaid
flowchart TD
+2 -2
View File
@@ -4,9 +4,9 @@
| 技术 | 作用 | 要点 |
|------|------|------|
| **Namespace** | 资源隔离 | PIDNETMNTUTSIPCUSER 六种命名空间 |
| **Namespace** | 资源隔离 | 常见核心包括 PIDNETMNTUTSIPCUSERCgroupTime namespace 通常默认不启用 |
| **Cgroups** | 资源限制 | 限制 CPU内存磁盘 I/O进程数 |
| **Union FS** | 分层存储 | overlay2 为推荐驱动支持 Copy-on-Write |
| **Union FS** | 分层存储 | 镜像分层与 Copy-on-Write 是核心Engine 29 新装默认 containerd image storeoverlay2 是经典 graph driver 场景的主要后备 |
| Namespace | 隔离内容 | 一句话说明 |
|-----------|---------|-----------|