实现Docker FROM的不同方式有哪些?

例如,图像的inheritance通常使用docker's from命令完成。

from centos7:centos7 

在我的情况下,我有一个Dockerfile,我想用作基本的图像生成器,我有两个子docker文件定制该文件。

我不想将dockerfile作为容器提交给dockerhub,所以我想这样做:

 Dockerfile slave/Dockerfile master/Dockerfile 

从/ Dockerfile看起来像这样:

 from ../Dockerfile 

这(或类似的)是可能的吗? 或者,我必须实际将顶级Dockerfile转换为容器,并将其提交为dockerhub映像,然后才能使用docker FROM指令来利用它。

不必将图像推送到dockerhub ,以便能够将其用作基础图像。 但是您需要在本地构build它们,以便将它们存储在本地Docker存储库中。 您不能使用基于相对path(如../Dockerfile的图像作为基础映像 – 必须将您自己的映像基于本地存储库中存在的其他映像文件。

假设您的基本映像使用以下(在Dockerfile ):

 FROM centos7:centos7 // More stuff... 

而当你build立它使用以下内容:

 docker build -t my/base . 

这里发生的是,图像centos7:centos7是从dockerhub下载的。 然后,您的图像my/base被build立和存储(没有版本)在您的本地存储库。 您也可以通过简单地提供版本信息来为您的docker容器提供版本信息:

 docker build -t my/base:2.0 . 

当像上面的例子那样构build了一个图像时,它可以作为一个FROM -image来构build其他的子图像,至less在同一台机器上(同一个本地存储库)。 所以,在你的子图像中,你可以使用以下内容:

 FROM my/base 

基本上你不必在任何地方推任何东西。 所有的图像都在本地机器上。 但是,如果您尝试构build没有预先构build的基础映像的子映像,则会出现错误。

有关构build和标记的更多信息,请查看文档:

  • dockerbuild设
  • docker标签
  • 创build你自己的形象