作者:小默yic | 来源:互联网 | 2023-02-05 09:52
我使用了基础docker镜像(openjdk)来创建一个具有简单Java程序的图像.
但我想知道我是否在docker文件中使用2个基本图像.我们怎么做?我不认为docker支持以下任何东西:
FROM dockerImaage1
FROM dockerImage2
其中一个场景,这是为什么需要就是我想要的图像ubuntu
有openjdk
,所以一个办法就是我使用Ubuntu的基本图像和泊坞窗中的文件写入指令来安装的OpenJDK,设置JAVA_HOME变量等,这无疑是很麻烦.
另一种选择,我喜欢使用openjdk
ubuntu内部基础的基本图像(如果可能的话).
可能有更典型的情况,我们可能需要的是严重的特征.
SO 如何在泊坞窗文件中使用2的基本图像的任何想法?还有人这样做过吗?
我在这里找到了一个逆向工程的链接,但它有一些限制,比如如果ubuntu的docker文件使用ADD或COPY等命令,逆向工程就会失败.
1> user2019864..:
最新版本的docker具有多阶段构建的概念。请参阅:(https://docs.docker.com/engine/userguide/eng-image/multistage-build/)
通过多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基础,并且每个都开始构建的新阶段。您可以有选择地将工件从一个阶段复制到另一个阶段,从而在最终图像中留下不需要的所有内容。
这是一个界限[仅链接的答案](// meta.stackexchange.com/q/8231)。您应该扩展答案以在此处包含尽可能多的信息,并且仅将链接用作参考。
2> CloudStax..:
答案是不。请参阅Moby问题中的详细讨论,如何通过Dockerfile将多张图像合并为一张。
容器背后的想法是,实际组成的最小单位是容器。通常,将多个图像合并到一个图像可能会带来一些问题。例如,不同的图像在库或库版本上有冲突。