docker - 多阶段构建中的最终输出图像是什么?
问题描述
以下是创建图像的 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 命令之后创建的层组成,如下图所示:
我的理解正确吗?
解决方案
该图是正确的,因为多阶段构建中的每个步骤都建立在diamol/base
. 在每个步骤中,build.txt
文件都会被复制和修改。foo
您可以通过从最终图像(例如)运行容器来验证文件的内容:
$ docker build -t foo .
$ docker run --rm -it --entrypoint=cat foo build.txt
Building...
Testing...
Done...
推荐阅读
- python - 如何在 PyO3 中实现 python 运算符
- javascript - 从 html (js) 重定向到 angular 8
- javascript - 这可以在反应类中设置等待状态吗?
- spring - 带有 OKTA 的 Spring SAML SSO - 更改 Web 应用程序上下文时的 InResponseTo
- html - 基于AngularJs中的正则表达式在文本框中只允许一个数值
- c++ - 主函数体未检测到对重载可变参数模板函数 C++ 的调用
- javascript - HtmlWebpackPlugin - 错误中的错误:加载程序“[...]/html-webpack-plugin - /lib/loader.js!/[...]/src/index.html”没有返回 html
- android - Android 10 上的 EditText 自动填充错误
- vue.js - vuejs 允许使用嵌套模板标签吗?
- c# - 使用 asp.net core 2.1 在 angular 8 中下载文件总是会给出损坏的文件