# docker-practice - Doramagic AI Context Pack

> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。

## 充分原则

- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。
- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。

## 给宿主 AI 的使用方式

你正在读取 Doramagic 为 docker-practice 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。

## Claim 消费规则

- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。
- **事实最低状态**：`supported`
- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。
- `weak`：只能作为低置信度线索，必须要求用户继续核实。
- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。
- `unverified`：不得作为事实使用，应明确说证据不足。
- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。

## 它最适合谁

- **想在安装前理解开源项目价值和边界的用户**：当前证据主要来自项目文档。 证据：`README.md` Claim：`clm_0002` supported 0.86

## 它能做什么

- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`03_install/3.5_raspberry-pi.md`, `07_dockerfile/7.5_entrypoint.md`, `07_dockerfile/7.7_arg.md`, `10_buildx/10.1_buildkit.md` 等 Claim：`clm_0001` supported 0.86

## 怎么开始

- `curl \` 证据：`03_install/3.5_raspberry-pi.md` Claim：`clm_0003` supported 0.86, `clm_0004` unverified 0.25, `clm_0009` unverified 0.25, `clm_0010` unverified 0.25 等
- `curl -s http://myip.ipip.net -i` 证据：`07_dockerfile/7.5_entrypoint.md` Claim：`clm_0004` unverified 0.25
- `npm install --include=dev; \` 证据：`07_dockerfile/7.7_arg.md` Claim：`clm_0005` unverified 0.25
- `npm install --production; \` 证据：`07_dockerfile/7.7_arg.md` Claim：`clm_0006` unverified 0.25
- `npm install && \` 证据：`07_dockerfile/7.7_arg.md` Claim：`clm_0005` unverified 0.25, `clm_0006` unverified 0.25, `clm_0007` unverified 0.25, `clm_0008` unverified 0.25 等
- `npm install --registry=https://registry.npmmirror.com` 证据：`10_buildx/10.1_buildkit.md` Claim：`clm_0008` unverified 0.25
- `curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.31.0/kind-linux-amd64` 证据：`14_kubernetes_setup/14.4_kind.md` Claim：`clm_0009` unverified 0.25
- `curl -sfL https://get.k3s.io | sh -` 证据：`14_kubernetes_setup/14.5_k3s.md` Claim：`clm_0010` unverified 0.25
- `curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh -o install-trivy.sh` 证据：`18_security/18.6_image_security.md` Claim：`clm_0011` unverified 0.25
- `curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh -o install-grype.sh` 证据：`18_security/18.6_image_security.md` Claim：`clm_0012` unverified 0.25

## 继续前判断卡

- **当前建议**：先做角色匹配试用
- **为什么**：这个项目更像角色库，核心风险是选错角色或把角色文案当执行能力；先用 Prompt Preview 试角色匹配，再决定是否沙盒导入。

### 30 秒判断

- **现在怎么做**：先做角色匹配试用
- **最小安全下一步**：先用 Prompt Preview 试角色匹配；满意后再隔离导入
- **先别相信**：角色质量和任务匹配不能直接相信。
- **继续会触碰**：角色选择偏差、命令执行、本地环境或项目文件

### 现在可以相信

- **适合人群线索：想在安装前理解开源项目价值和边界的用户**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`README.md` Claim：`clm_0002` supported 0.86
- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`03_install/3.5_raspberry-pi.md`, `07_dockerfile/7.5_entrypoint.md`, `07_dockerfile/7.7_arg.md`, `10_buildx/10.1_buildkit.md` 等 Claim：`clm_0001` supported 0.86
- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`03_install/3.5_raspberry-pi.md` Claim：`clm_0003` supported 0.86, `clm_0004` unverified 0.25, `clm_0009` unverified 0.25, `clm_0010` unverified 0.25

### 现在还不能相信

- **角色质量和任务匹配不能直接相信。**（unverified）：角色库证明有很多角色，不证明每个角色都适合你的具体任务，也不证明角色能产生高质量结果。
- **不能把角色文案当成真实执行能力。**（unverified）：安装前只能判断角色描述和任务画像是否匹配，不能证明它能在宿主 AI 里完成任务。
- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。
- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。
- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。
- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。
- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。
- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。

### 继续会触碰什么

- **角色选择偏差**：用户对任务应该由哪个专家角色处理的判断。 原因：选错角色会让 AI 从错误专业视角回答，浪费时间或误导决策。
- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`03_install/3.5_raspberry-pi.md`, `07_dockerfile/7.5_entrypoint.md`, `07_dockerfile/7.7_arg.md`, `10_buildx/10.1_buildkit.md` 等
- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`03_install/3.5_raspberry-pi.md`, `07_dockerfile/7.5_entrypoint.md`, `07_dockerfile/7.7_arg.md`, `10_buildx/10.1_buildkit.md` 等
- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。

### 最小安全下一步

- **先跑 Prompt Preview**：先用交互式试用验证任务画像和角色匹配，不要先导入整套角色库。（适用：任何项目都适用，尤其是输出质量未知时。）
- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）
- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）

### 退出方式

- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。
- **保留原始角色选择记录**：如果输出偏题，可以回到任务画像阶段重新选择角色，而不是继续沿着错误角色推进。
- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。
- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。

## 哪些只能预览

- 解释项目适合谁和能做什么
- 基于项目文档演示典型对话流程
- 帮助用户判断是否值得安装或继续研究

## 哪些必须安装后验证

- 真实安装 Skill、插件或 CLI
- 执行脚本、修改本地文件或访问外部服务
- 验证真实输出质量、性能和兼容性

## 边界与风险判断卡

- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0025` inferred 0.45
- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`03_install/3.5_raspberry-pi.md`, `07_dockerfile/7.5_entrypoint.md`, `07_dockerfile/7.7_arg.md`, `10_buildx/10.1_buildkit.md` 等 Claim：`clm_0026` supported 0.86
- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。
- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。
- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。

## 开工前工作上下文

### 加载顺序

- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。
- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。
- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。
- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。
- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。

### 任务路由

- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`03_install/3.5_raspberry-pi.md`, `07_dockerfile/7.5_entrypoint.md`, `07_dockerfile/7.7_arg.md`, `10_buildx/10.1_buildkit.md` 等 Claim：`clm_0001` supported 0.86

### 上下文规模

- 文件总数：254
- 重要文件覆盖：40/254
- 证据索引条目：80
- 角色 / Skill 条目：78

### 证据不足时的处理

- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。
- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。
- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。
- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。

## Prompt Recipes

### 适配判断

- 目标：判断这个项目是否适合用户当前任务。
- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。

```text
请基于 docker-practice 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。
```

### 安装前体验

- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。
- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。

```text
请把 docker-practice 当作安装前体验资产，而不是已安装工具或真实运行环境。

请严格输出四段：
1. 先问我 3 个必要问题。
2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。
3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。
4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。

硬性边界：
- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。
- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。
- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。
- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。
- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。
- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。

```

### 角色 / Skill 选择

- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。
- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。

```text
请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。
```

### 风险预检

- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。
- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。

```text
请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。
```

### 宿主 AI 开工指令

- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。
- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。

```text
请基于 docker-practice 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。
```

## 角色 / Skill 索引

- 共索引 78 个角色 / Skill / 项目文档条目。

- **第一章 Docker 简介**（project_doc）：版本提示 ：本书内容及示例基于 Docker Engine v29.x 及以上版本。值得注意的是，自 Docker Engine v29 起，官方在全新安装场景下 默认启用 containerd image store 作为镜像存储后端 （取代传统 classic store 路径下的 graph driver 体系）。这项底层革新极大增强了 Docker 对多架构镜像（Multi-platform）以及软件供应链安全元数据（Attestations, SBOM, Provenance）的本地支持原生性。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`01_introduction/README.md`
- **第二章 基本概念**（project_doc）：版本说明 ：本章内容及示例基于 Docker v29.x 编写。镜像标签相关示例请查阅官方文档以确认最新可用版本。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`02_basic_concept/README.md`
- **第三章 安装 Docker**（project_doc）：Docker Engine 主要提供 stable 和 test 两个更新频道； test.docker.com 对应测试频道，适合预发布验证，不建议直接用于生产环境。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/README.md`
- **第四章 使用镜像**（project_doc）：Docker 运行容器前需要本地存在对应的镜像，如果本地不存在该镜像，Docker 会从镜像仓库下载该镜像。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/README.md`
- **第五章 操作容器**（project_doc）：简单的说，容器是独立运行的一个或一组应用，以及它们的运行态环境。对应的，虚拟机可以理解为模拟运行的一整套操作系统 提供了运行态环境和其他系统环境 和跑在上面的应用。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`05_container/README.md`
- **第六章 访问仓库**（project_doc）：一个容易混淆的概念是注册服务器 Registry 。实际上注册服务器是管理仓库的具体服务器，每个服务器上可以有多个仓库，而每个仓库下面有多个镜像。从这方面来说，仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 docker.io/ubuntu 来说， docker.io 是注册服务器地址， ubuntu 是仓库名。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`06_repository/README.md`
- **第七章 Dockerfile 指令详解**（project_doc）：Dockerfile 是一个文本文件，其内包含了一条条的 指令 Instruction ，每一条指令构建一层，因此每一条指令的内容，就是描述该层应当如何构建。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`07_dockerfile/README.md`
- **第八章 数据管理**（project_doc）：这一章介绍如何在 Docker 内部以及容器之间管理数据，在容器中管理数据主要有以下几种方式： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`08_data/README.md`
- **第九章 网络配置**（project_doc）：Docker 容器需要网络来与外部世界通信、容器之间相互通信以及与宿主机通信。Docker 在安装时会自动配置网络基础设施，大多数情况下开箱即用。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`09_network/README.md`
- **第十章 Docker Buildx**（project_doc）：Docker Buildx 是一个 docker CLI 插件，其扩展了 docker 命令，支持 Moby BuildKit 10.1 buildkit.md 提供的功能。提供了与 docker build 相同的用户体验，并增加了许多新功能。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`10_buildx/README.md`
- **第十一章 Docker Compose**（project_doc）：Docker Compose 是 Docker 官方编排 Orchestration 项目之一，负责快速定义和启动本地或单机多容器应用。跨主机集群编排应交给 Swarm、Kubernetes 或云厂商托管服务。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`11_compose/README.md`
- **第十二章 底层实现**（project_doc）：Docker 底层的核心技术包括 Linux 上的命名空间 Namespaces 、控制组 Control groups 、Union 文件系统 Union file systems 和容器格式 Container format 。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`12_implementation/README.md`
- **第十三章 容器编排基础**（project_doc）：Kubernetes 是 Google 发起的开源容器编排系统，它支持多种云平台与私有数据中心。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`13_kubernetes_concepts/README.md`
- **第十四章 部署 Kubernetes**（project_doc）：目前，Kubernetes 支持在多种环境下使用，包括本地主机 Ubuntu、Debian、CentOS、Fedora 等 、云服务 腾讯云 TKE https://cloud.tencent.com/product/tke 、 阿里云 ACK https://cn.aliyun.com/product/ack 、 百度云 https://cloud.baidu.com/product/cce.html 等 。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`14_kubernetes_setup/README.md`
- **第十五章 Etcd 项目**（project_doc）：etcd 是 CoreOS 团队发起的一个管理配置信息和服务发现 Service Discovery 的项目，在这一章里面，我们将基于 etcd 3.5 系列 版本介绍该项目的目标，安装和使用，以及实现的技术。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`15_etcd/README.md`
- **第十六章 容器与云计算**（project_doc）：版本说明 ：云平台的 Kubernetes 版本和容器服务功能更新迅速。本章示例使用通用的 API 版本（如 apps/v1 ），建议查阅各云厂商官方文档获取最新的服务版本和配置指南。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`16_cloud/README.md`
- **第十七章 容器其它生态**（project_doc）：版本说明（核验日期：2026-05-16） ：本章介绍的工具和运行时（Podman、Buildah、Skopeo、containerd、Kata Containers、gVisor、WasmEdge 等）都保持活跃的开发。建议： - 查阅各项目官方文档获取最新版本 - 在生产环境使用前验证版本兼容性 - 关注官方发布说明了解重大变更 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`17_ecosystem/README.md`
- **第十八章 安全**（project_doc）：容器安全是生产环境部署的核心考量。本章介绍 Docker 的安全机制和最佳实践。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`18_security/README.md`
- **第十九章 容器监控与日志**（project_doc）：在生产环境中，容器化应用部署完成后，实时掌握容器的运行状态以及应用日志非常重要。本章将以 Docker/Compose 的场景为主，介绍容器监控与日志管理的落地思路与最小实践闭环。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`19_observability/README.md`
- **第二十章 实战案例 - 操作系统**（project_doc）：本章将介绍 Docker 在不同操作系统镜像场景下的实战案例。当你构建容器化应用时，选择合适的基础镜像至关重要。不同的操作系统镜像在大小、功能和性能方面各有特点，适用于不同的使用场景。本章通过具体的案例，详细讲解如何在 Docker 中使用主流操作系统镜像，包括轻量级镜像 Busybox、Alpine 和完整功能镜像 Debian、Ubuntu、CentOS 等 。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`20_cases_os/README.md`
- **第二十一章 实战案例 - DevOps**（project_doc）：- GitHub Actions actions/checkout@v6 等 采用大版本标签，代表最新的功能版本与稳定性的平衡 - 编程语言镜像 golang:1.26-alpine 、 rust:1.95-alpine 等 采用次版本标签，确保 API 稳定性同时获得安全更新 - 数据库镜像 postgres:16-alpine 、 redis:8-alpine 等 采用大版本标签，便于获得修复和改进 - 基础镜像 alpine:3.21 、 debian:12 等 采用大版本或次版本标签，避免 latest 以确保可再现性 - 实际项目中应根据需求调整版本，生产环境建议定期更新以获取安全补丁 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`21_case_devops/README.md`
- **Docker 从入门到实践**（project_doc）：! License: CC BY-NC-SA 4.0 https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg https://creativecommons.org/licenses/by-nc-sa/4.0/ ! GitHub stars https://img.shields.io/github/stars/yeasy/docker practice?style=social https://github.com/yeasy/docker practice ! Release https://img.shields.io/github/release/yeasy/docker practice/all.svg https://github.com/yeasy/docker practice/releases ! Online Read… 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`README.md`
- **附录**（project_doc）：本附录汇总了 Docker 相关的常见问题、镜像参考、命令速查、最佳实践、调试方法、官方资源、术语表与学习路线，便于按需查阅。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`appendix/README.md`
- **Generated Authentication File**（project_doc）：Run the htpasswd command in section 6.3.3 to generate nginx.htpasswd locally before starting the demo registry. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`06_repository/demo/auth/README.md`
- **Generated TLS Files**（project_doc）：Run the certificate steps in section 6.3.1 to generate docker.domain.com.key , docker.domain.com.crt , and root-ca.crt locally before starting the demo registry. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`06_repository/demo/ssl/README.md`
- **WordPress Compose 示例**（project_doc）：本示例使用 Docker Compose secrets 管理数据库密码，启动前需要先创建密钥文件（参见书中 11.8 节）： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`11_compose/demo/wordpress/README.md`
- **附录三：Docker 命令查询**（project_doc）：Docker 命令有两大类，客户端命令和服务端命令。前者是主要的操作接口，后者用来启动 Docker Daemon。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`appendix/command/README.md`
- **附录一：常见问题与错误速查**（project_doc）：答：与 Docker 相关的本地资源默认存放在 /var/lib/docker/ 目录下，以 overlay2 文件系统为例，其中 containers 目录存放容器信息， image 目录存放镜像信息， overlay2 目录下存放具体的镜像层文件。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`appendix/faq/README.md`
- **附录二：热门镜像介绍**（project_doc）：Ubuntu ubuntu.md ：Ubuntu 官方镜像的使用方法。 CentOS centos.md ：CentOS 镜像与替代发行版的说明。 Nginx nginx.md ：Nginx 官方镜像的使用方法。 PHP php.md ：PHP 官方镜像的使用方法。 Node.js nodejs.md ：Node.js 官方镜像的使用方法。 MySQL mysql.md ：MySQL 官方镜像的使用方法。 WordPress wordpress.md ：WordPress 官方镜像的使用方法。 MongoDB mongodb.md ：MongoDB 官方镜像的使用方法。 Redis redis.md ：Redis 官方镜像的使用方法。 MinIO minio.md ：MinIO 官方镜像的使用方法。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`appendix/repo/README.md`
- **如何贡献**（project_doc）：领取或创建新的 Issue https://github.com/yeasy/docker practice/issues ，如 issue 235 https://github.com/yeasy/docker practice/issues/235 ，添加自己为 Assignee 。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`CONTRIBUTING.md`
- **1.1 快速上手**（project_doc）：版本说明 ：本节示例基于 Docker v29.x 编写。示例中使用的 nginx:alpine 镜像标签为演示用途，请查阅 Docker Hub - nginx https://hub.docker.com/ /nginx 确认最新可用版本。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`01_introduction/1.1_quickstart.md`
- **1.2 什么是 Docker**（project_doc）：Docker 是彻底改变了软件开发和交付方式的革命性技术。本节将从核心概念、与传统虚拟机的对比、技术基础以及历史生态等多个维度，带你深入理解什么是 Docker。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`01_introduction/1.2_what.md`
- **1.3 为什么要用 Docker**（project_doc）：在回答 “为什么用 Docker” 之前，笔者想先问一个问题： 你有没有经历过这些场景？ 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`01_introduction/1.3_why.md`
- **本章小结**（project_doc）：- Docker 是一种轻量级虚拟化技术，核心价值是 环境一致性 - 与虚拟机相比，Docker 更轻量、更快速、资源利用率更高 - Docker 基于 Linux 内核的 Namespace、Cgroups 和 Union FS 技术 - Docker 推动了容器技术的标准化 OCI 和生态发展 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`01_introduction/summary.md`
- **2.1 镜像**（project_doc）：版本说明 ：本节示例基于 Docker v29.x 编写。示例中使用的镜像标签（如 ubuntu:24.04 、 nginx:latest ）为演示用途，建议查阅 Docker Hub https://hub.docker.com 或相应镜像的官方页面确认最新可用版本。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`02_basic_concept/2.1_image.md`
- **2.2 容器**（project_doc）：容器是 Docker 技术的核心，是应用实际运行的载体。本节将从容器的本质、与虚拟机的区别、存储层机制以及生命周期管理等方面，全面解析 Docker 容器。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`02_basic_concept/2.2_container.md`
- **2.3 仓库**（project_doc）：版本说明 ：本节示例基于 Docker v29.x 和常见镜像版本编写。示例中的版本号（如 nginx:1.28 、 mysql:8.4 、 mysql:5.7 等）为演示用途。实际使用时请访问 Docker Hub 官方页面 https://hub.docker.com 或相应镜像的发布页确认最新可用版本和标签。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`02_basic_concept/2.3_repository.md`
- **本章小结**（project_doc）：概念 要点 ------ ------ 镜像是什么 只读的应用模板，包含运行所需的一切 分层存储 多层叠加，共享基础层，节省空间 只读特性 构建后不可修改，保证一致性 层的陷阱 删除操作只是标记，不减小体积 容器是什么 镜像的运行实例，本质是隔离的进程 容器 vs 虚拟机 共享内核，更轻量，但隔离性较弱 存储层 可写层随容器删除而消失 数据持久化 使用 Volume 或 Bind Mount 生命周期 与主进程 PID 1 绑定 Registry 存储和分发镜像的服务 仓库 Repository 同一软件的镜像集合 标签 Tag 版本标识，默认为 latest Docker Hub 默认的公共 Registry 私有 Registry 企业内部使用，推荐 Harbor 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`02_basic_concept/summary.md`
- **3.1 Ubuntu**（project_doc）：Ubuntu 是 Docker 最常用的运行环境之一。本节将介绍如何在 Ubuntu 系统上安装 Docker，并配置国内镜像加速。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.1_ubuntu.md`
- **3.2 Debian**（project_doc）：Debian 以其稳定性著称，是 Docker 的理想宿主系统。本节将指导你在 Debian 上完成 Docker 的安装。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.2_debian.md`
- **3.3 Fedora**（project_doc）：Fedora 作为技术前沿的 Linux 发行版，对 Docker 有着良好的支持。本节介绍在 Fedora 上的安装步骤。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.3_fedora.md`
- **3.4 CentOS**（project_doc）：CentOS 及其替代品 Rocky Linux、AlmaLinux 是企业级服务器常用的操作系统。本节介绍在这些系统上安装 Docker 的步骤。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.4_centos.md`
- **3.5 Raspberry Pi**（project_doc）：树莓派等 ARM 架构设备在物联网和边缘计算领域应用广泛。本节介绍如何在树莓派上安装 Docker。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.5_raspberry-pi.md`
- **本章小结**（project_doc）：Docker 支持在多种平台上安装和使用，选择合适的安装方式是顺利使用 Docker 的第一步。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/summary.md`
- **4.1 获取镜像**（project_doc）：从 Docker 镜像仓库获取镜像可谓是 Docker 运作的第一步。本节将介绍如何使用 docker pull 命令下载镜像，以及如何理解下载过程。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/4.1_pull.md`
- **本章小结**（project_doc）：操作 命令 ------ ------ 拉取镜像 docker pull 镜像名:标签 拉取所有标签 docker pull -a 镜像名 指定平台 docker pull --platform linux/amd64 镜像名 用摘要拉取 docker pull 镜像名@sha256:... 列出所有镜像 docker images 按仓库名过滤 docker images nginx 列出虚悬镜像 docker images -f dangling=true 只输出 ID docker images -q 显示摘要 docker images --digests 自定义格式 docker images --format "..." 查看空间占用 docker system df 删除指定镜像 docker rmi 镜像名:标签 强制删除 docker rmi -f 镜像名 删除虚悬镜像 docker image prune… 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/summary.md`
- **本章小结**（project_doc）：操作 命令 说明 ------ ------ ------ 新建并运行 docker run 最常用的启动方式 交互式启动 docker run -it 用于调试或临时操作 后台运行 docker run -d 用于服务类应用 启动已停止的容器 docker start 重用已有容器 优雅停止 docker stop 先 SIGTERM，超时后 SIGKILL 强制停止 docker kill 直接 SIGKILL 重启 docker restart 停止后立即启动 停止全部 docker stop $ docker ps -q 停止所有运行中容器 进入容器调试 docker exec -it 容器名 bash 推荐方式 执行单条命令 docker exec 容器名 命令 不进入交互模式 查看主进程输出 docker attach 容器名 慎用，退出可能停止容器 删除已停止容器 docker rm 容器名 需先停止 强制删除运… 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`05_container/summary.md`
- **本章小结**（project_doc）：本章介绍了 Docker Hub 的使用、私有仓库的搭建以及 Nexus 3 等企业级方案。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`06_repository/summary.md`
- **本章小结**（project_doc）：本章详细介绍了 Dockerfile 的所有核心指令，以下是各指令要点的速查表。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`07_dockerfile/summary.md`
- **8.1 数据卷**（project_doc）：特性 说明 ------ ------ 持久化 容器删除后数据仍然保留 共享 多个容器可以挂载同一个数据卷 即时生效 对数据卷的修改立即可见 不影响镜像 数据卷中的数据不会打包进镜像 性能更好 绕过 UnionFS，直接读写 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`08_data/8.1_volume.md`
- **8.2 挂载主机目录**（project_doc）：Bind Mount 绑定挂载 将 Docker daemon 所在主机 上的目录或文件直接挂载到容器中。容器可以读写这台主机上的文件系统。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`08_data/8.2_bind-mounts.md`
- **8.3 tmpfs 挂载**（project_doc）：tmpfs 挂载会把数据放在内存中，而不是写入容器可写层或数据卷。它只适用于 Linux 语义的容器环境，适合需要快速读写但不要求持久化的数据。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`08_data/8.3_tmpfs.md`
- **本章小结**（project_doc）：本章介绍了 Docker 的三种数据管理方式：数据卷 Volume 、绑定挂载 Bind Mount 和 tmpfs 挂载。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`08_data/summary.md`
- **9.1 配置 DNS**（project_doc）：Docker 1.10.0 以后，内建了一个 DNS 服务器，使得容器可以直接通过容器名称通信。方法很简单，只要在创建容器时使用 --name 为容器命名即可。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`09_network/9.1_dns.md`
- **本章小结**（project_doc）：概念 要点 ------ ------ DNS 配置 自定义网络支持嵌入式 DNS，可通过容器名解析 网络类型 bridge 默认 、host、none、overlay、macvlan 自定义网络 推荐使用，支持容器名 DNS 解析和更好的隔离 容器互联 同一自定义网络内容器可直接通过容器名通信 端口映射 -p 宿主机端口:容器端口 暴露服务到外部 网络隔离 不同网络默认隔离，增强安全性 --link 已废弃，使用自定义网络替代 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`09_network/summary.md`
- **本章小结**（project_doc）：Docker Buildx 是 Docker 构建系统的重要进化，提供了高效、安全且支持多平台的镜像构建能力。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`10_buildx/summary.md`
- **本章小结**（project_doc）：Docker Compose 是管理多容器应用的利器，通过 YAML 文件声明式地定义服务、网络和数据卷。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`11_compose/summary.md`
- **本章小结**（project_doc）：本章深入介绍了 Docker 的底层实现，包括命名空间、控制组和联合文件系统三大核心技术。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`12_implementation/summary.md`
- **本章小结**（project_doc）：Kubernetes 是当前最主流的容器编排平台，其声明式管理模型和丰富的 API 为大规模容器化应用提供了坚实的基础。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`13_kubernetes_concepts/summary.md`
- **本章小结**（project_doc）：部署 Kubernetes 集群有多种方式，应根据使用场景选择合适的方案。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`14_kubernetes_setup/summary.md`
- **本章小结**（project_doc）：etcd 是 Kubernetes 的核心存储组件，为分布式系统提供可靠的键值存储和服务发现能力。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`15_etcd/summary.md`
- **本章小结**（project_doc）：本章介绍了公有云服务对 Docker 的积极支持，以及新出现的容器云平台。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`16_cloud/summary.md`
- **本章小结**（project_doc）：Docker 并非容器生态的唯一选择，了解其他工具有助于根据场景做出合适的技术选型。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`17_ecosystem/summary.md`
- **本章小结**（project_doc）：Docker 的安全性依赖于多层隔离机制的协同工作，同时需要用户遵循最佳实践。本章涵盖的核心安全维度包括： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`18_security/summary.md`
- **本章小结**（project_doc）：指标监控 ：以 Prometheus + Grafana 为主，完成指标采集、存储与可视化。 日志管理 ：以 EFK/ELK 为例，完成容器日志的集中采集、检索与分析。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`19_observability/summary.md`
- **本章小结**（project_doc）：除了官方的镜像外，在 Docker Hub 上还有许多第三方组织或个人上传的 Docker 镜像。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`20_cases_os/summary.md`
- **本章小结**（project_doc）：本章通过一个完整的 DevOps 工作流示例，串联了从代码提交、自动化测试、镜像构建、 到部署发布的一整套实践路径。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`21_case_devops/summary.md`
- **目录**（project_doc）：Docker 从入门到实践 README.md 修订记录 CHANGELOG.md 如何贡献 CONTRIBUTING.md 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`SUMMARY.md`
- **3.10 开启实验特性**（project_doc）：一些 docker 命令或功能仅当 实验特性 开启时才能使用，请按照以下方法进行设置。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.10_experimental.md`
- **3.6 Linux 离线安装**（project_doc）：生产环境中一般都是没有公网资源的，本文介绍如何在生产服务器上离线部署 Docker 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.6_offline.md`
- **3.7 macOS**（project_doc）：macOS 上没有原生 Linux 内核，Docker 需要运行在一个轻量级虚拟机中。Docker Desktop 完全封装了这个复杂性，让 Mac 用户可以像 Linux 用户一样使用 Docker。但有几点需要特别了解： 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.7_mac.md`
- **3.8 Windows 10/11**（project_doc）：在 Windows 平台上，Docker Desktop 提供了完整的 Docker 开发环境。本节介绍在 Windows 10/11 上的安装和配置。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.8_windows.md`
- **3.9 镜像加速器**（project_doc）：国内从 Docker Hub 拉取镜像有时会遇到困难，此时可以配置镜像加速器。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`03_install/3.9_mirror.md`
- **4.2 列出镜像**（project_doc）：在下载了镜像后，我们可以使用 docker image ls 命令列出本地主机上的镜像。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/4.2_list.md`
- **4.3 删除本地镜像**（project_doc）：当不再需要某个镜像时，我们可以将其删除以释放存储空间。本节介绍删除镜像的常用方法。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/4.3_rm.md`
- **4.4 利用 commit 理解镜像构成**（project_doc）：注意：如果你是初学者，可以暂时跳过后面的内容，直接学习 容器 ../05 container/ 一节。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/4.4_commit.md`
- **4.5 使用 Dockerfile 定制镜像**（project_doc）：从刚才的 docker commit 的学习中，我们可以了解到，镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本，用这个脚本来构建、定制镜像，那么之前提及的无法重复、镜像构建不透明、体积难以控制等问题就会更容易解决。这个脚本就是 Dockerfile。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/4.5_build.md`
- **4.6 其它制作镜像的方式**（project_doc）：除了标准的使用 Dockerfile 生成镜像的方法外，由于各种特殊需求和历史原因，还提供了一些其它方法用以生成镜像。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`04_image/4.6_other.md`

## 证据索引

- 共索引 80 条证据。

- **第一章 Docker 简介**（documentation）：版本提示 ：本书内容及示例基于 Docker Engine v29.x 及以上版本。值得注意的是，自 Docker Engine v29 起，官方在全新安装场景下 默认启用 containerd image store 作为镜像存储后端 （取代传统 classic store 路径下的 graph driver 体系）。这项底层革新极大增强了 Docker 对多架构镜像（Multi-platform）以及软件供应链安全元数据（Attestations, SBOM, Provenance）的本地支持原生性。 证据：`01_introduction/README.md`
- **第二章 基本概念**（documentation）：版本说明 ：本章内容及示例基于 Docker v29.x 编写。镜像标签相关示例请查阅官方文档以确认最新可用版本。 证据：`02_basic_concept/README.md`
- **第三章 安装 Docker**（documentation）：Docker Engine 主要提供 stable 和 test 两个更新频道； test.docker.com 对应测试频道，适合预发布验证，不建议直接用于生产环境。 证据：`03_install/README.md`
- **第四章 使用镜像**（documentation）：Docker 运行容器前需要本地存在对应的镜像，如果本地不存在该镜像，Docker 会从镜像仓库下载该镜像。 证据：`04_image/README.md`
- **第五章 操作容器**（documentation）：简单的说，容器是独立运行的一个或一组应用，以及它们的运行态环境。对应的，虚拟机可以理解为模拟运行的一整套操作系统 提供了运行态环境和其他系统环境 和跑在上面的应用。 证据：`05_container/README.md`
- **第六章 访问仓库**（documentation）：一个容易混淆的概念是注册服务器 Registry 。实际上注册服务器是管理仓库的具体服务器，每个服务器上可以有多个仓库，而每个仓库下面有多个镜像。从这方面来说，仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 docker.io/ubuntu 来说， docker.io 是注册服务器地址， ubuntu 是仓库名。 证据：`06_repository/README.md`
- **第七章 Dockerfile 指令详解**（documentation）：Dockerfile 是一个文本文件，其内包含了一条条的 指令 Instruction ，每一条指令构建一层，因此每一条指令的内容，就是描述该层应当如何构建。 证据：`07_dockerfile/README.md`
- **第八章 数据管理**（documentation）：这一章介绍如何在 Docker 内部以及容器之间管理数据，在容器中管理数据主要有以下几种方式： 证据：`08_data/README.md`
- **第九章 网络配置**（documentation）：Docker 容器需要网络来与外部世界通信、容器之间相互通信以及与宿主机通信。Docker 在安装时会自动配置网络基础设施，大多数情况下开箱即用。 证据：`09_network/README.md`
- **第十章 Docker Buildx**（documentation）：Docker Buildx 是一个 docker CLI 插件，其扩展了 docker 命令，支持 Moby BuildKit 10.1 buildkit.md 提供的功能。提供了与 docker build 相同的用户体验，并增加了许多新功能。 证据：`10_buildx/README.md`
- **第十一章 Docker Compose**（documentation）：Docker Compose 是 Docker 官方编排 Orchestration 项目之一，负责快速定义和启动本地或单机多容器应用。跨主机集群编排应交给 Swarm、Kubernetes 或云厂商托管服务。 证据：`11_compose/README.md`
- **第十二章 底层实现**（documentation）：Docker 底层的核心技术包括 Linux 上的命名空间 Namespaces 、控制组 Control groups 、Union 文件系统 Union file systems 和容器格式 Container format 。 证据：`12_implementation/README.md`
- **第十三章 容器编排基础**（documentation）：Kubernetes 是 Google 发起的开源容器编排系统，它支持多种云平台与私有数据中心。 证据：`13_kubernetes_concepts/README.md`
- **第十四章 部署 Kubernetes**（documentation）：目前，Kubernetes 支持在多种环境下使用，包括本地主机 Ubuntu、Debian、CentOS、Fedora 等 、云服务 腾讯云 TKE https://cloud.tencent.com/product/tke 、 阿里云 ACK https://cn.aliyun.com/product/ack 、 百度云 https://cloud.baidu.com/product/cce.html 等 。 证据：`14_kubernetes_setup/README.md`
- **第十五章 Etcd 项目**（documentation）：etcd 是 CoreOS 团队发起的一个管理配置信息和服务发现 Service Discovery 的项目，在这一章里面，我们将基于 etcd 3.5 系列 版本介绍该项目的目标，安装和使用，以及实现的技术。 证据：`15_etcd/README.md`
- **第十六章 容器与云计算**（documentation）：版本说明 ：云平台的 Kubernetes 版本和容器服务功能更新迅速。本章示例使用通用的 API 版本（如 apps/v1 ），建议查阅各云厂商官方文档获取最新的服务版本和配置指南。 证据：`16_cloud/README.md`
- **第十七章 容器其它生态**（documentation）：版本说明（核验日期：2026-05-16） ：本章介绍的工具和运行时（Podman、Buildah、Skopeo、containerd、Kata Containers、gVisor、WasmEdge 等）都保持活跃的开发。建议： - 查阅各项目官方文档获取最新版本 - 在生产环境使用前验证版本兼容性 - 关注官方发布说明了解重大变更 证据：`17_ecosystem/README.md`
- **第十八章 安全**（documentation）：容器安全是生产环境部署的核心考量。本章介绍 Docker 的安全机制和最佳实践。 证据：`18_security/README.md`
- **第十九章 容器监控与日志**（documentation）：在生产环境中，容器化应用部署完成后，实时掌握容器的运行状态以及应用日志非常重要。本章将以 Docker/Compose 的场景为主，介绍容器监控与日志管理的落地思路与最小实践闭环。 证据：`19_observability/README.md`
- **第二十章 实战案例 - 操作系统**（documentation）：本章将介绍 Docker 在不同操作系统镜像场景下的实战案例。当你构建容器化应用时，选择合适的基础镜像至关重要。不同的操作系统镜像在大小、功能和性能方面各有特点，适用于不同的使用场景。本章通过具体的案例，详细讲解如何在 Docker 中使用主流操作系统镜像，包括轻量级镜像 Busybox、Alpine 和完整功能镜像 Debian、Ubuntu、CentOS 等 。 证据：`20_cases_os/README.md`
- **第二十一章 实战案例 - DevOps**（documentation）：- GitHub Actions actions/checkout@v6 等 采用大版本标签，代表最新的功能版本与稳定性的平衡 - 编程语言镜像 golang:1.26-alpine 、 rust:1.95-alpine 等 采用次版本标签，确保 API 稳定性同时获得安全更新 - 数据库镜像 postgres:16-alpine 、 redis:8-alpine 等 采用大版本标签，便于获得修复和改进 - 基础镜像 alpine:3.21 、 debian:12 等 采用大版本或次版本标签，避免 latest 以确保可再现性 - 实际项目中应根据需求调整版本，生产环境建议定期更新以获取安全补丁 证据：`21_case_devops/README.md`
- **Docker 从入门到实践**（documentation）：! License: CC BY-NC-SA 4.0 https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg https://creativecommons.org/licenses/by-nc-sa/4.0/ ! GitHub stars https://img.shields.io/github/stars/yeasy/docker practice?style=social https://github.com/yeasy/docker practice ! Release https://img.shields.io/github/release/yeasy/docker practice/all.svg https://github.com/yeasy/docker practice/releases ! Online Reading https://img.shields.io/badge/在线阅读-GitBook-brightgreen https://yeasy.gitbook.io/docker practice ! PDF https://img.shields.io/badge/PDF-下载-orange https://github.com/yeasy/docker practice/releases/latest ! Based on Docker Engine v29.x https://img.shields.io/badge/Based-Docker%20… 证据：`README.md`
- **附录**（documentation）：本附录汇总了 Docker 相关的常见问题、镜像参考、命令速查、最佳实践、调试方法、官方资源、术语表与学习路线，便于按需查阅。 证据：`appendix/README.md`
- **Generated Authentication File**（documentation）：Run the htpasswd command in section 6.3.3 to generate nginx.htpasswd locally before starting the demo registry. 证据：`06_repository/demo/auth/README.md`
- **Generated TLS Files**（documentation）：Run the certificate steps in section 6.3.1 to generate docker.domain.com.key , docker.domain.com.crt , and root-ca.crt locally before starting the demo registry. 证据：`06_repository/demo/ssl/README.md`
- **WordPress Compose 示例**（documentation）：本示例使用 Docker Compose secrets 管理数据库密码，启动前需要先创建密钥文件（参见书中 11.8 节）： 证据：`11_compose/demo/wordpress/README.md`
- **附录三：Docker 命令查询**（documentation）：Docker 命令有两大类，客户端命令和服务端命令。前者是主要的操作接口，后者用来启动 Docker Daemon。 证据：`appendix/command/README.md`
- **附录一：常见问题与错误速查**（documentation）：答：与 Docker 相关的本地资源默认存放在 /var/lib/docker/ 目录下，以 overlay2 文件系统为例，其中 containers 目录存放容器信息， image 目录存放镜像信息， overlay2 目录下存放具体的镜像层文件。 证据：`appendix/faq/README.md`
- **附录二：热门镜像介绍**（documentation）：Ubuntu ubuntu.md ：Ubuntu 官方镜像的使用方法。 CentOS centos.md ：CentOS 镜像与替代发行版的说明。 Nginx nginx.md ：Nginx 官方镜像的使用方法。 PHP php.md ：PHP 官方镜像的使用方法。 Node.js nodejs.md ：Node.js 官方镜像的使用方法。 MySQL mysql.md ：MySQL 官方镜像的使用方法。 WordPress wordpress.md ：WordPress 官方镜像的使用方法。 MongoDB mongodb.md ：MongoDB 官方镜像的使用方法。 Redis redis.md ：Redis 官方镜像的使用方法。 MinIO minio.md ：MinIO 官方镜像的使用方法。 证据：`appendix/repo/README.md`
- **Package**（package_manifest）：{ "name": "docker practice", "version": "1.9.2", "description": "docker practice", "private": true, "devDependencies": { "vuepress": "1.9.10", "vuepress-plugin-container": "^2.1.5", "vuepress-theme-hope": "^1.0.0" }, "scripts": { "test": "node scripts/check metadata.js && python3 -m unittest tools.test prepare pdf sources", "mdpress:help": "mdpress --help", "build": "rm -rf site site site && mdpress build --format site --output site && rm -rf site && mv site site site", "serve": "mdpress serve", "start": "mdpress serve", "pdf": "rm -rf /tmp/docker practice-pdf-src && python3 tools/prepare pdf sources.py --book-dir . --out /tmp/docker practice-pdf-src && cd /tmp/docker practice-pdf-src && md… 证据：`package.json`
- **Package**（package_manifest）：{ "name": "my app", "version": "19.6.0", "devDependencies": { "webpack": " ", "webpack-cli": " " }, "scripts": { "build": "mkdir -p $PWD/dist && cp -r src/ dist/" } } 证据：`04_image/demo/buildkit/package.json`
- **如何贡献**（documentation）：领取或创建新的 Issue https://github.com/yeasy/docker practice/issues ，如 issue 235 https://github.com/yeasy/docker practice/issues/235 ，添加自己为 Assignee 。 证据：`CONTRIBUTING.md`
- **1.1 快速上手**（documentation）：版本说明 ：本节示例基于 Docker v29.x 编写。示例中使用的 nginx:alpine 镜像标签为演示用途，请查阅 Docker Hub - nginx https://hub.docker.com/ /nginx 确认最新可用版本。 证据：`01_introduction/1.1_quickstart.md`
- **1.2 什么是 Docker**（documentation）：Docker 是彻底改变了软件开发和交付方式的革命性技术。本节将从核心概念、与传统虚拟机的对比、技术基础以及历史生态等多个维度，带你深入理解什么是 Docker。 证据：`01_introduction/1.2_what.md`
- **1.3 为什么要用 Docker**（documentation）：在回答 “为什么用 Docker” 之前，笔者想先问一个问题： 你有没有经历过这些场景？ 证据：`01_introduction/1.3_why.md`
- **本章小结**（documentation）：- Docker 是一种轻量级虚拟化技术，核心价值是 环境一致性 - 与虚拟机相比，Docker 更轻量、更快速、资源利用率更高 - Docker 基于 Linux 内核的 Namespace、Cgroups 和 Union FS 技术 - Docker 推动了容器技术的标准化 OCI 和生态发展 证据：`01_introduction/summary.md`
- **2.1 镜像**（documentation）：版本说明 ：本节示例基于 Docker v29.x 编写。示例中使用的镜像标签（如 ubuntu:24.04 、 nginx:latest ）为演示用途，建议查阅 Docker Hub https://hub.docker.com 或相应镜像的官方页面确认最新可用版本。 证据：`02_basic_concept/2.1_image.md`
- **2.2 容器**（documentation）：容器是 Docker 技术的核心，是应用实际运行的载体。本节将从容器的本质、与虚拟机的区别、存储层机制以及生命周期管理等方面，全面解析 Docker 容器。 证据：`02_basic_concept/2.2_container.md`
- **2.3 仓库**（documentation）：版本说明 ：本节示例基于 Docker v29.x 和常见镜像版本编写。示例中的版本号（如 nginx:1.28 、 mysql:8.4 、 mysql:5.7 等）为演示用途。实际使用时请访问 Docker Hub 官方页面 https://hub.docker.com 或相应镜像的发布页确认最新可用版本和标签。 证据：`02_basic_concept/2.3_repository.md`
- **本章小结**（documentation）：概念 要点 ------ ------ 镜像是什么 只读的应用模板，包含运行所需的一切 分层存储 多层叠加，共享基础层，节省空间 只读特性 构建后不可修改，保证一致性 层的陷阱 删除操作只是标记，不减小体积 容器是什么 镜像的运行实例，本质是隔离的进程 容器 vs 虚拟机 共享内核，更轻量，但隔离性较弱 存储层 可写层随容器删除而消失 数据持久化 使用 Volume 或 Bind Mount 生命周期 与主进程 PID 1 绑定 Registry 存储和分发镜像的服务 仓库 Repository 同一软件的镜像集合 标签 Tag 版本标识，默认为 latest Docker Hub 默认的公共 Registry 私有 Registry 企业内部使用，推荐 Harbor 证据：`02_basic_concept/summary.md`
- **3.1 Ubuntu**（documentation）：Ubuntu 是 Docker 最常用的运行环境之一。本节将介绍如何在 Ubuntu 系统上安装 Docker，并配置国内镜像加速。 证据：`03_install/3.1_ubuntu.md`
- **3.2 Debian**（documentation）：Debian 以其稳定性著称，是 Docker 的理想宿主系统。本节将指导你在 Debian 上完成 Docker 的安装。 证据：`03_install/3.2_debian.md`
- **3.3 Fedora**（documentation）：Fedora 作为技术前沿的 Linux 发行版，对 Docker 有着良好的支持。本节介绍在 Fedora 上的安装步骤。 证据：`03_install/3.3_fedora.md`
- **3.4 CentOS**（documentation）：CentOS 及其替代品 Rocky Linux、AlmaLinux 是企业级服务器常用的操作系统。本节介绍在这些系统上安装 Docker 的步骤。 证据：`03_install/3.4_centos.md`
- **3.5 Raspberry Pi**（documentation）：树莓派等 ARM 架构设备在物联网和边缘计算领域应用广泛。本节介绍如何在树莓派上安装 Docker。 证据：`03_install/3.5_raspberry-pi.md`
- **本章小结**（documentation）：Docker 支持在多种平台上安装和使用，选择合适的安装方式是顺利使用 Docker 的第一步。 证据：`03_install/summary.md`
- **4.1 获取镜像**（documentation）：从 Docker 镜像仓库获取镜像可谓是 Docker 运作的第一步。本节将介绍如何使用 docker pull 命令下载镜像，以及如何理解下载过程。 证据：`04_image/4.1_pull.md`
- **本章小结**（documentation）：操作 命令 ------ ------ 拉取镜像 docker pull 镜像名:标签 拉取所有标签 docker pull -a 镜像名 指定平台 docker pull --platform linux/amd64 镜像名 用摘要拉取 docker pull 镜像名@sha256:... 列出所有镜像 docker images 按仓库名过滤 docker images nginx 列出虚悬镜像 docker images -f dangling=true 只输出 ID docker images -q 显示摘要 docker images --digests 自定义格式 docker images --format "..." 查看空间占用 docker system df 删除指定镜像 docker rmi 镜像名:标签 强制删除 docker rmi -f 镜像名 删除虚悬镜像 docker image prune 删除未使用镜像 docker image prune -a 批量删除 docker rmi $ docker images -q -f ... 证据：`04_image/summary.md`
- **本章小结**（documentation）：操作 命令 说明 ------ ------ ------ 新建并运行 docker run 最常用的启动方式 交互式启动 docker run -it 用于调试或临时操作 后台运行 docker run -d 用于服务类应用 启动已停止的容器 docker start 重用已有容器 优雅停止 docker stop 先 SIGTERM，超时后 SIGKILL 强制停止 docker kill 直接 SIGKILL 重启 docker restart 停止后立即启动 停止全部 docker stop $ docker ps -q 停止所有运行中容器 进入容器调试 docker exec -it 容器名 bash 推荐方式 执行单条命令 docker exec 容器名 命令 不进入交互模式 查看主进程输出 docker attach 容器名 慎用，退出可能停止容器 删除已停止容器 docker rm 容器名 需先停止 强制删除运行中容器 docker rm -f 容器名 直接删除 删除容器及匿名卷 docker rm -v 容器名 同时清理匿名卷 清理所有已停止容器 docker container prune 批量清理 证据：`05_container/summary.md`
- **本章小结**（documentation）：本章介绍了 Docker Hub 的使用、私有仓库的搭建以及 Nexus 3 等企业级方案。 证据：`06_repository/summary.md`
- **本章小结**（documentation）：本章详细介绍了 Dockerfile 的所有核心指令，以下是各指令要点的速查表。 证据：`07_dockerfile/summary.md`
- **8.1 数据卷**（documentation）：特性 说明 ------ ------ 持久化 容器删除后数据仍然保留 共享 多个容器可以挂载同一个数据卷 即时生效 对数据卷的修改立即可见 不影响镜像 数据卷中的数据不会打包进镜像 性能更好 绕过 UnionFS，直接读写 证据：`08_data/8.1_volume.md`
- **8.2 挂载主机目录**（documentation）：Bind Mount 绑定挂载 将 Docker daemon 所在主机 上的目录或文件直接挂载到容器中。容器可以读写这台主机上的文件系统。 证据：`08_data/8.2_bind-mounts.md`
- **8.3 tmpfs 挂载**（documentation）：tmpfs 挂载会把数据放在内存中，而不是写入容器可写层或数据卷。它只适用于 Linux 语义的容器环境，适合需要快速读写但不要求持久化的数据。 证据：`08_data/8.3_tmpfs.md`
- **本章小结**（documentation）：本章介绍了 Docker 的三种数据管理方式：数据卷 Volume 、绑定挂载 Bind Mount 和 tmpfs 挂载。 证据：`08_data/summary.md`
- **9.1 配置 DNS**（documentation）：Docker 1.10.0 以后，内建了一个 DNS 服务器，使得容器可以直接通过容器名称通信。方法很简单，只要在创建容器时使用 --name 为容器命名即可。 证据：`09_network/9.1_dns.md`
- **本章小结**（documentation）：概念 要点 ------ ------ DNS 配置 自定义网络支持嵌入式 DNS，可通过容器名解析 网络类型 bridge 默认 、host、none、overlay、macvlan 自定义网络 推荐使用，支持容器名 DNS 解析和更好的隔离 容器互联 同一自定义网络内容器可直接通过容器名通信 端口映射 -p 宿主机端口:容器端口 暴露服务到外部 网络隔离 不同网络默认隔离，增强安全性 --link 已废弃，使用自定义网络替代 证据：`09_network/summary.md`
- **本章小结**（documentation）：Docker Buildx 是 Docker 构建系统的重要进化，提供了高效、安全且支持多平台的镜像构建能力。 证据：`10_buildx/summary.md`
- **本章小结**（documentation）：Docker Compose 是管理多容器应用的利器，通过 YAML 文件声明式地定义服务、网络和数据卷。 证据：`11_compose/summary.md`
- **本章小结**（documentation）：本章深入介绍了 Docker 的底层实现，包括命名空间、控制组和联合文件系统三大核心技术。 证据：`12_implementation/summary.md`
- 其余 20 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。

## 宿主 AI 必须遵守的规则

- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`01_introduction/README.md`, `02_basic_concept/README.md`, `03_install/README.md`
- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`01_introduction/README.md`, `02_basic_concept/README.md`, `03_install/README.md`

## 用户开工前应该回答的问题

- 你准备在哪个宿主 AI 或本地环境中使用它？
- 你只是想先体验工作流，还是准备真实安装？
- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？

## 验收标准

- 所有能力声明都能回指到 evidence_refs 中的文件路径。
- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。
- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。

---

## Doramagic Context Augmentation

下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。

## Human Manual 骨架

使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。

宿主 AI 硬性规则：
- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。
- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。
- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。

- **书籍概览与学习路径**：importance `high`
  - source_paths: README.md, SUMMARY.md, 01_introduction/README.md, 01_introduction/1.1_quickstart.md, 01_introduction/1.2_what.md
- **多平台 Docker 安装指南**：importance `high`
  - source_paths: 03_install/README.md, 03_install/3.1_ubuntu.md, 03_install/3.2_debian.md, 03_install/3.3_fedora.md, 03_install/3.4_centos.md
- **镜像、容器与仓库核心操作**：importance `high`
  - source_paths: 02_basic_concept/README.md, 02_basic_concept/2.1_image.md, 02_basic_concept/2.2_container.md, 02_basic_concept/2.3_repository.md, 04_image/README.md
- **数据、网络、编排与生态进阶**：importance `high`
  - source_paths: 08_data/README.md, 08_data/8.1_volume.md, 08_data/8.2_bind-mounts.md, 08_data/8.3_tmpfs.md, 09_network/README.md

## Repo Inspection Evidence / 源码检查证据

- repo_clone_verified: true
- repo_inspection_verified: true
- repo_commit: `bd944a2383b103459966b3dd0b7c079c74abb3ac`
- inspected_files: `README.md`, `docker-compose.yml`, `package.json`

宿主 AI 硬性规则：
- 没有 repo_clone_verified=true 时，不得声称已经读过源码。
- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。
- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。

## Doramagic Pitfall Constraints / 踩坑约束

这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。

### Constraint 1: 依赖 Docker 环境

- Trigger: 安装/运行入口包含 Docker 命令：docker run -it --rm -p 4000:80 ccr.ccs.tencentyun.com/dockerpracticesig/docker_practice:vuepress
- Host AI rule: 标注 Docker 前置条件，并提供非 Docker 路径或失败提示。
- Why it matters: 非工程用户可能没有 Docker，启动成本明显增加。
- Evidence: identity.distribution | https://github.com/yeasy/docker_practice | docker run -it --rm -p 4000:80 ccr.ccs.tencentyun.com/dockerpracticesig/docker_practice:vuepress
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 2: 来源证据：CNCF Meshery Playground - free training resource for docker_practice community

- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：CNCF Meshery Playground - free training resource for docker_practice community
- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- Why it matters: 可能增加新用户试用和生产接入成本。
- Evidence: community_evidence:github | https://github.com/yeasy/docker_practice/issues/547 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 3: 来源证据：English translation for docker practice book

- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：English translation for docker practice book
- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- Why it matters: 可能增加新用户试用和生产接入成本。
- Evidence: community_evidence:github | https://github.com/yeasy/docker_practice/issues/510 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 4: 来源证据：There are several image cannot be displayed in PDF book

- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：There are several image cannot be displayed in PDF book
- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- Why it matters: 可能增加新用户试用和生产接入成本。
- Evidence: community_evidence:github | https://github.com/yeasy/docker_practice/issues/568 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 5: 来源证据：docker compose中关于deploy描述有误

- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：docker compose中关于deploy描述有误
- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- Why it matters: 可能增加新用户试用和生产接入成本。
- Evidence: community_evidence:github | https://github.com/yeasy/docker_practice/issues/550 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 6: 来源证据：文档错误：5.2_daemon.md 中交互模式调试的命令示例错误

- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：文档错误：5.2_daemon.md 中交互模式调试的命令示例错误
- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- Why it matters: 可能增加新用户试用和生产接入成本。
- Evidence: community_evidence:github | https://github.com/yeasy/docker_practice/issues/566 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 7: 来源证据：静态资源文件失效

- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：静态资源文件失效
- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。
- Why it matters: 可能增加新用户试用和生产接入成本。
- Evidence: community_evidence:github | https://github.com/yeasy/docker_practice/issues/562 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 8: 能力判断依赖假设

- Trigger: README/documentation is current enough for a first validation pass.
- Host AI rule: 将假设转成下游验证清单。
- Why it matters: 假设不成立时，用户拿不到承诺的能力。
- Evidence: capability.assumptions | https://github.com/yeasy/docker_practice | README/documentation is current enough for a first validation pass.
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 9: 维护活跃度未知

- Trigger: 未记录 last_activity_observed。
- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。
- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- Evidence: evidence.maintainer_signals | https://github.com/yeasy/docker_practice | last_activity_observed missing
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

- Trigger: no_demo
- Evidence: downstream_validation.risk_items | https://github.com/yeasy/docker_practice | no_demo; severity=medium
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。
