Docker 构建缓存经常被误解为单一机制,但它实际上由三种不同的缓存组成:**层级链 (layer chains)**、**挂载缓存 (mount caches,如包管理器)** 和 **镜像存储 (image store)**。它们的有效性取决于您构建的具体“形态”和使用方式。 ### 优化关键规则: 1. **按变更类别思考**:针对常见的“源码变更”(代码编辑)进行优化,而非“冷”(初始)构建。 2. **层级排序**:将稳定且耗时的操作(如安装依赖)置于频繁变动的步骤之上。按“清单优先 (manifest-first)”排序可使构建速度提升 3 到 24 倍。 3. **明确优势所在**:层级缓存(导出到 CI)无法加速已失效的步骤。如果您的速度提升来自挂载缓存(增量编译),则需要**持久化构建器状态**(基于磁盘的缓存),而不是传统的导出/导入后端。 4. **避免导出成本**:导出/导入后端会对每次构建产生“序列化成本”。仅在缓存命中价值大于传输时间时才使用它们。 5. **正确划定作用域**:缓存键的共享范围应仅限于层级共享的范围。 6. **管理缓存增长**:缓存的大小随依赖版本的多样性增长,而非构建频率。 7. **优化分发**:对于 N 个任务的并发作业,应从镜像仓库拉取转向使用共享的镜像存储磁盘。