例如,通常使用docker's from命令完成图像的继承。
from centos7:centos7
就我而言,我有一个Dockerfile,希望用作基础镜像构建器,并且有两个子dockerfile可以自定义该文件。
我不想将原始dockerfile作为容器提交给dockerhub,因此,例如,我想这样做:
Dockerfile
slave/Dockerfile
master/Dockerfile
slave / Dockerfile如下所示:
from ../Dockerfile
这(或类似的东西)可能吗?还是我必须先将顶级Dockerfile转换为容器,然后将其提交为dockerhub镜像,然后才能使用docker FROM指令来利用它。
最佳答案
您无需将镜像推送到dockerhub即可将其用作基本镜像。但是您需要在本地构建它们,以便将它们存储在本地Docker存储库中。您不能将图像用作基于相对路径(例如../Dockerfile
)的基础图像-您必须将自己的图像基于本地存储库中存在的其他图像文件。
假设您的基本图片使用以下内容(在Dockerfile
中):
FROM centos7:centos7
// More stuff...
在构建它时,请使用以下命令:
docker build -t my/base .
此处发生的是图像
centos7:centos7
是从dockerhub下载的。然后,将生成图像my/base
并将其存储(不进行版本控制)在本地存储库中。您还可以通过简单地提供如下版本信息来为Docker容器提供版本控制:docker build -t my/base:2.0 .
如上例所示,在构建镜像后,至少可以在同一台计算机(相同的本地存储库)上,将其用作
FROM
-image来构建其他子镜像。因此,在子图像中,您可以使用以下内容:FROM my/base
基本上,您无需在任何地方进行任何操作。所有图像都位于本地计算机上。但是,如果尝试在没有先前构建的基础镜像的情况下构建子镜像,则会出现错误。
有关构建和标记的更多信息,请查看文档:
关于docker - 实现Docker FROM的不同方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712708/