Docker 构建缓存
目录
当你多次构建相同的 Docker 镜像时,了解如何优化构建缓存是确保构建快速运行的绝佳工具。
构建缓存的工作原理
理解 Docker 的构建缓存有助于您编写更好的 Dockerfile,从而实现更快的构建。
以下示例展示了一个用 C 语言编写的程序的小型 Dockerfile。
# syntax=docker/dockerfile:1
FROM ubuntu:latest
RUN apt-get update && apt-get install -y build-essentials
COPY main.c Makefile /src/
WORKDIR /src/
RUN make build此 Dockerfile 中的每条指令都对应于最终镜像中的一层。 您可以将镜像层视为一个堆栈,每一层都在其之前的层之上添加更多内容:

每当某一层发生变化时,该层都需要重新构建。例如,
假设你在 main.c 文件中对程序进行了更改。在此更改之后,
COPY 命令必须再次运行,以便这些更改在镜像中生效。换句话说,Docker 会对此层的缓存进行失效处理。
如果某一层发生变化,其之后的所有层也会受到影响。当带有 COPY 命令的层失效时,其后的所有层也需要重新运行:

这就是 Docker 构建缓存的简要说明。一旦某一层发生变化,那么所有下游层也需要重新构建。即使它们不会产生不同的构建结果,仍然需要重新运行。
其他资源
有关使用缓存进行高效构建的更多信息,请参阅: