带有混合基础镜像的 Docker 镜像

Posted

技术标签:

【中文标题】带有混合基础镜像的 Docker 镜像【英文标题】:Docker Image with Mixin of Base Images 【发布时间】:2017-12-31 16:15:37 【问题描述】:

我想构建一个使用 NodeJs 和 Java Runtime 的 docker 镜像。

可以找到单独的 docker 文件,每个基地一个。

如何使用两个 base 来创建新图像?

在这种情况下,我将在同一个图像中运行一个 Angular 应用和一个 Spring 应用。

关于如何拥有具有此类要求的单个图像的任何提示?有意义吗?

【问题讨论】:

不能运行三个容器吗?节点,java和生成的角度应用程序?当您开始将服务压缩到一个容器中时,架构通常会出现一些非常错误的问题。问问自己是否可以通过运行多个容器实例来扩展您的应用。 很好,我其实是把两者分开了…… 【参考方案1】:

如果这对您的情况有意义,很难从外部判断。一般来说,图像应该做一件事,特别是运行一个应用程序。好像您在一个容器中混合了两种东西。如果您真的想这样做,我会选择“更难安装”的图像并将其选为基础图像(似乎是 Spring 图像)。然后我会添加 node.js 的包,它应该只有几行代码。由于大多数 Dockerfile 都是公开的,因此您可以查找镜像并为这两个应用构建自己的镜像。

但总的来说,这听起来你真的需要两张图片,一张用于 Angular 的东西,一张用于 Spring 的东西。然后,您可以使用 docker-compose 或手动通过链接来组合这些图像(如果需要)。

【讨论】:

听起来不错!我同意你的观点,会有不同的图像。当我使用 docker-compose 时,它​​是创建一个新的图像,还是只是为了编排容器? @FilipeMiranda 您可以使用服务中的build 属性来扩展图像。另一种方法是仅使用 image 引用预构建的镜像(在构建系统创建镜像时很常见)。 docker-compose 编排和链接图像的容器。如果您链接它们并安装卷,它会自动创建您的容器网络。值得一试,我几乎在所有项目中都使用它。 build 覆盖 Dockerfile 的 CMD 部分,就是这样。使用image,您可以在合成中定义基本图像,这可能是您的两个图像之一。网上有很多这样的例子。

以上是关于带有混合基础镜像的 Docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章

docker基础镜像包制作

docker镜像管理基础

docker镜像管理基础

docker镜像管理基础

Docker 基础镜像

【3.1】docker基础知识 镜像