【发布时间】:2022-02-02 04:43:35
【问题描述】:
我的理解是,如果RUN命令“string”本身没有改变(即要安装的包列表没有改变),docker引擎使用缓存中的图像进行相同的操作。这也是我的经验:
...
Step 2/6 : RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y curl git-all locales locales-all python3 python3-pip python3-venv libusb-1.0-0 gosu && rm -rf /var/lib/apt/lists/*
---> Using cache
---> 518e8ff74d4c
...
不过,Dockerfile best practices document 官方是这么说 apt-get 的:
使用
RUN apt-get update && apt-get install -y可确保您的 Dockerfile 安装最新的软件包版本,无需进一步编码或手动干预。这种技术被称为“缓存破坏”。
如果我将新包添加到列表中,这是正确的,但如果我不修改列表,则不是。
我的理解是否正确,或者我在这里遗漏了什么?
如果是,我是否可以假设,如果 Ubuntu 基础映像也已更新(这会使整个缓存失效),我只会在 apt-get install 中获得更新的软件包?
【问题讨论】: