首页 > 解决方案 > 多阶段构建中的最终输出图像是什么?

问题描述

以下是创建图像的 dockerfile:

FROM diamol/base AS build-stage                  
RUN echo 'Building...' > /build.txt             

FROM diamol/base AS test-stage
COPY --from=build-stage /build.txt /build.txt
RUN echo 'Testing...' >> /build.txt              

FROM diamol/base
COPY --from=test-stage /build.txt /build.txt
RUN echo 'Done...' >> /build.txt               

我的理解是,最终图像由 diamol/base 层和在最后一个 RUN 命令之后创建的层组成,如下图所示: 在此处输入图像描述

我的理解正确吗?

标签: docker

解决方案


该图是正确的,因为多阶段构建中的每个步骤都建立在diamol/base. 在每个步骤中,build.txt文件都会被复制和修改。foo您可以通过从最终图像(例如)运行容器来验证文件的内容:

$ docker build -t foo .
$ docker run --rm -it --entrypoint=cat foo build.txt
Building...
Testing...
Done...

推荐阅读