我使用了一个基础 docker 镜像 (openjdk) 来创建一个包含简单 Java 程序的镜像。
但我想知道我是否在 docker 文件中使用 2 个基本图像。我们怎么能做到这一点?
我认为 docker 不支持类似的东西:
FROM dockerImaage1
FROM dockerImage2
其中一个场景,为什么需要这样做是我想要一个具有 openjdk
的 ubuntu
图像,所以一种方法是我使用 ubuntu 的基础图像和 in docker文件写入指令安装openjdk,设置JAVA_HOME变量等,无疑是繁琐的。
另一种选择,我喜欢在 ubuntu 的基础中使用 openjdk
的基础镜像(如果可能的话)。
可能还有更典型的情况,我们可能需要非常糟糕的特性。
所以关于如何在 docker 文件中使用 2 个基本图像的任何想法?有人做过吗?
我找到了一个反向工程链接here , 但它有一些限制,比如如果 ubuntu 的 docker 文件使用 ADD 或 COPY 等命令,则逆向工程失败。
最佳答案
最新版本的 docker 具有多阶段构建的概念。引用:(https://docs.docker.com/engine/userguide/eng-image/multistage-build/)
通过多阶段构建,您可以在 Dockerfile 中使用多个 FROM 语句。每个 FROM 指令都可以使用不同的基础,并且它们中的每一个都开始构建的新阶段。您可以选择性地将工件从一个阶段复制到另一个阶段,从而在最终图像中留下您不想要的所有内容。
关于ubuntu - 如何使用多个基础镜像构建一个 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729973/