Docker:从中间层删除文件

Sno*_*ash 5 docker

是否可以从 Docker 中间层完全删除文件?

例如我有:

Layer A: with BigFile
 L Layer B: remove BigFile
   L Layer C: builds on B
Run Code Online (Sandbox Code Playgroud)

由于文件仍然存在于容器中,即使BigFile无法访问,它也存在于C. 因此增加了整体图像尺寸。

但我想要的是BigFile完全从C.

解决办法是什么?难道只是从Layer A一开始就将其删除吗?

Dan*_*ell 4

解决办法是什么?是不是一开始就将其从A层中删除?

一旦文件位于某个层中,就无法将其删除,但如果您小心地在添加该文件的同一构建步骤中删除该文件,则该文件将不会保留在该构建步骤的层中。

简单、常见的示例是运行 apt get update、安装软件包,然后在同一 RUN 命令中删除软件包索引,以将 apt 索引保留在映像层之外。

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run详细讨论了此示例。