ubuntu - 如何使用多个基础镜像构建一个 docker 镜像

标签 ubuntu docker dockerfile

我使用了一个基础 docker 镜像 (openjdk) 来创建一个包含简单 Java 程序的镜像。

但我想知道我是否在 docker 文件中使用 2 个基本图像。我们怎么能做到这一点? 我认为 docker 不支持类似的东西:

FROM dockerImaage1
FROM dockerImage2

其中一个场景,为什么需要这样做是我想要一个具有 openjdkubuntu 图像,所以一种方法是我使用 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/

相关文章:

java - 无法为 JSP 编译类?

docker - 为什么在基线扫描结束时将dockerized zap挂起?

ruby-on-rails - 如何使用 Docker 生成 Rails 迁移

docker - 部署角度后始终响应nginx索引

node.js - 通过 docker 文件在生产中设置 NODE_ENV 变量

docker - “RUN sh -c '触摸/app.jar'”有什么作用?

python - 导入错误 - Tornado 需要在 ubuntu 14.04 上更新 SSL 模块

docker - 无法从本地 docker 注册表推/拉

ubuntu - io.c(605) [Receiver=3.0.9] 处的 rsync 协议(protocol)数据流(代码 12)出错

bash - 打开二进制文件 : does not exist when executing pandoc in Gitlab CI bash script