图像的继承通常使用命令中的docker来完成,例如。
from centos7:centos7
就我而言,我有一个Dockerfile,我想用它作为基本图像构建器,我有两个子dockerfiles来自定义该文件。
我不想要将原始dockerfile作为dockerhub的容器提交,例如,我想这样做:
Dockerfile
slave/Dockerfile
master/Dockerfile
slave / Dockerfile看起来像这样:
from ../Dockerfile
这(或类似的)可能吗?或者我必须实际将顶级Dockerfile转换为容器,并将其作为dockerhub映像提交,然后才能使用docker FROM 指令来利用它。
答案 0 :(得分:3)
您无需将图像推送到dockerhub 即可将其用作基本图像。但是您需要在本地构建它们,以便它们存储在本地docker存储库中。您不能将图像用作基于相对路径(如../Dockerfile
)的基本图像 - 您必须将自己的图像基于本地存储库中存在的其他图像文件。
假设您的基本图像使用以下内容(在Dockerfile
中):
FROM centos7:centos7
// More stuff...
当你构建它时,你使用以下内容:
docker build -t my/base .
这里发生的是从dockerhub下载图像centos7:centos7
。然后,您的图像my/base
将在本地存储库中构建并存储(无版本控制)。您还可以通过提供以下版本信息为您的docker容器提供版本控制:
docker build -t my/base:2.0 .
当像上面的示例中那样构建图像时,它可以用作FROM
- 图像来构建其他子图像,至少在同一台机器上(同一本地存储库)。因此,在您的子图像中,您可以使用以下内容:
FROM my/base
基本上你不需要在任何地方推送任何东西。所有图像都存储在您的计算机上。但是,如果您尝试在没有先前构建的基本映像的情况下构建子映像,则会出现错误。
有关构建和标记的更多信息,请查看文档: