apt update 每次都会在我的 docker 构建中运行吗?

g.p*_*dou 1 docker dockerfile

我有一个 dockerfile,它的第五行是

RUN apt update -y
Run Code Online (Sandbox Code Playgroud)

假设前五行在未来的构建中不会改变。只有下面的行会改变。

问题

当我后来一次又一次地构建这个图像时,

  • 是否会apt update再次运行(因此生成不断变化的包版本,以不确定的结果结束)或...
  • 由于分层文件系统的更改,直到该行之后创建的层都将从缓存中重用吗?

lar*_*sks 5

RUN apt update -y命令生成的层会被缓存,并且该命令不会再次运行,除非缓存失效,这可以通过多种不同的方式发生:

  • 您可以使用该选项显式禁用缓存--no-cache
  • 您修改 Dockerfile 中该行之前的部分apt update
  • 您更新基础映像(例如通过docker pulldocker build --pull)。
  • Dockerfile将文件复制到自上次构建映像以来已更改的映像中。