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 中的每条指令都转换为最终镜像中的一个层。您可以将镜像层视为一个堆栈,每个层都在其之前的层之上添加更多内容。

Image layer diagram

每当一个层发生更改时,该层都需要重新构建。例如,假设您更改了 `main.c` 文件中的程序。此更改后,`COPY` 命令必须再次运行,以便这些更改出现在镜像中。换句话说,Docker 将使此层的缓存失效。

如果一个层发生更改,其后的所有其他层也会受到影响。当带有 `COPY` 命令的层失效时,所有后续层也需要重新运行。

Image layer diagram, showing cache invalidation

这便是 Docker 构建缓存的精髓。一旦一个层发生更改,所有下游层也都需要重新构建。即使它们不会以不同的方式构建任何内容,它们仍然需要重新运行。

其他资源

有关使用缓存进行高效构建的更多信息,请参阅

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.