我正在用两种方法构建 Docker 形象:
**方法1。**阶段1在从源代码构建后创建一个包的tar。在阶段2中,复制此tar并使用解压缩的文件夹启动服务。
- 使用以下方法创建的图像大小:1 GB *
**方法2.**阶段1仅从构建上下文中复制相同包的预构建tar(文件夹大小与方法1 untar后相同),并将其放置在/tmp中,阶段2从/tmp复制此文件,并提取和遵循与上述方法相同的步骤。 - 使用以下方法创建的图像大小:500兆字节 *
注:第2阶段在两种方法中完全相同,根据我的理解,第1阶段中所做的任何事情都不应影响最终图像大小。
有人能解释一下为什么会发生这种情况吗?
1条答案
按热度按时间qcuzuvrc1#
假设使用以下Dockerfile:
发布的映像层将包含
COPY --from=base file.tar file.tar
步骤中的file.tar
。在后面的步骤中删除file.tar
不会影响前面的层。任何时候,如果您在一个步骤中删除了在前面的步骤中创建的文件,请注意,这些文件仍随映像一起提供,任何检查映像层的人都可以访问这些文件。它们只是不显示给容器内查看组装层的进程。