如何dynamic地改变docker的基本图像

这是我试图实现的。 我有两个dockerfiles,与唯一的区别是FROM语句完全相同。 一个基于CentOS,另一个基于RHEL。 我遇到的问题是每当我在一个文件中修改某些内容时,我必须在另一个文件中做同样的事情,因为它们必须是相同的。

一个解决scheme是将基础映像作为parameter passing给docker build命令。 我不知道这是否可能。

另一个将是有某种包含文件机制。 在这种情况下,我会在一个单独的文件中实现所有常见的步骤,我只是将其包含在我的dockerfiles中。

也许还有其他的一些方法。

任何build议是值得欢迎的?

你可以使用图像标记来处理这个问题。

将FROM更改为如下所示:

FROM base-image 

然后在构build之前只使用RHEL或CentOS“base-image”(使用-f)

 $ docker tag -f centos base-image $ docker build -t my_image/builtfromcentos . $ docker tag -f rhel base-image $ docker build -t my_image/builtfromrhel . 

Dockerfile中可以有多个FROM语句。 例如:

 FROM ubuntu:latest FROM centos:latest COPY config /tmp/config EXPOSE 9080 8080 

将创build两个图像。 从Docker参考文档 :

FROM可以在单个Dockerfile中出现多次,以创build多个图像。