1. Docker layer cache 在镜像构建中如何命中与失效?
请说明 Docker layer cache 在镜像构建中如何命中与失效?
- 层缓存命中的机制(指令哈希)
- 缓存失效的触发(指令变化、上下文变化)
- 构建缓存优化
Docker 构建时按 Dockerfile 的每条指令生成一层,构建缓存以层为单位:若某条指令的操作(RUN 命令、COPY 的源、基础镜像等)与缓存匹配,则复用该层,不重新执行。命中条件:指令内容、基础镜像、上下文相关文件(COPY 的源文件内容)未变。失效:一旦某条指令不匹配(如 COPY 的文件内容变了、RUN 命令变了),其后所有层缓存全部失效需重建。优化:把不常变的指令放前面(先 COPY 依赖清单再 RUN 安装,利用缓存),把频繁变化的文件放最后 COPY,避免缓存大面积失效。BuildKit 用更细粒度的缓存与 remote cache 提升命中。
层缓存命中以"指令+上下文内容"为键,一旦中间失效则后续全失效,调整指令顺序是优化缓存的关键。