Tib*_*ács 9 ubuntu apt-get docker
我的理解是,如果RUN命令“string”本身没有改变(即要安装的包列表没有改变),docker引擎将使用缓存中的图像进行相同的操作。这也是我的经历:
...\nStep 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/*\n ---> Using cache\n ---> 518e8ff74d4c\n...\nRun Code Online (Sandbox Code Playgroud)\n然而,官方Dockerfile 最佳实践文档对 apt-get 是这样说的:
\n\n\n使用
\nRUN apt-get update && apt-get install -y可确保您的 Dockerfile 安装最新的软件包版本,无需进一步编码或手动干预。这种技术被称为\xe2\x80\x9ccachebusting\xe2\x80\x9d。
如果我向列表中添加新包,则情况如此,但如果我不修改列表,则情况并非如此。
\n我的理解正确吗,还是我在这里遗漏了一些东西?
\napt-get install如果是,我是否可以假设只有 Ubuntu 基础映像也已更新(这会使整个缓存失效)时我才会获得更新的软件包?
你把中间的引言删掉了。引文的其余部分包括一个非常重要的条件:
您还可以通过指定包版本来实现缓存清除。这称为版本固定,例如:
Run Code Online (Sandbox Code Playgroud)RUN apt-get update && apt-get install -y \ package-bar \ package-baz \ package-foo=1.3.*
因此,您在该示例中运行的命令每次都会通过更改列表中包的固定版本来更改。请注意,除了更改命令运行之外,您还可以使用构建参数来更改环境,这具有相同的效果,如本答案中所述。
| 归档时间: |
|
| 查看次数: |
10807 次 |
| 最近记录: |