Multistage docker图像大小是否取决于早期阶段?

wfsdck30  于 2023-02-21  发布在  Docker
关注(0)|答案(1)|浏览(143)

我正在用两种方法构建 Docker 形象:

**方法1。**阶段1在从源代码构建后创建一个包的tar。在阶段2中,复制此tar并使用解压缩的文件夹启动服务。

  • 使用以下方法创建的图像大小:1 GB *
    **方法2.**阶段1仅从构建上下文中复制相同包的预构建tar(文件夹大小与方法1 untar后相同),并将其放置在/tmp中,阶段2从/tmp复制此文件,并提取和遵循与上述方法相同的步骤。
  • 使用以下方法创建的图像大小:500兆字节 *

注:第2阶段在两种方法中完全相同,根据我的理解,第1阶段中所做的任何事情都不应影响最终图像大小。
有人能解释一下为什么会发生这种情况吗?

qcuzuvrc

qcuzuvrc1#

假设使用以下Dockerfile:

FROM image:base as base
RUN create >file.tar

FROM image:release
COPY --from=base file.tar file.tar
RUN tar -xvf file.tar
RUN rm file.tar

发布的映像层将包含COPY --from=base file.tar file.tar步骤中的file.tar。在后面的步骤中删除file.tar不会影响前面的层。任何时候,如果您在一个步骤中删除了在前面的步骤中创建的文件,请注意,这些文件仍随映像一起提供,任何检查映像层的人都可以访问这些文件。它们只是不显示给容器内查看组装层的进程。

相关问题