docker - 实现Docker FROM的不同方式是什么?

标签 docker dockerfile

例如,通常使用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 build
  • docker tag
  • create your own image
  • 关于docker - 实现Docker FROM的不同方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712708/

    相关文章:

    docker - 如何将镜像创建的卷与 docker-compose 指定的命名卷链接起来?

    docker - 尝试构建 Docker 镜像时找不到 Conda

    docker - docker compose 中的多阶段构建?

    docker - 有没有办法将网络和绑定(bind)端口分配给 Jenkins 中的 docker 代理?

    docker - 扩展 CouchDB Docker 镜像

    Docker多阶段构建不在阶段之间复制

    Docker 容器使用不同的工具显示不同的 CPU 使用率

    docker - 所有 Docker 命令实际上都会创建另一个层吗?

    powershell - Docker Windows容器-DockerFile设置IIS默认文档

    java - 如何从java程序运行docker镜像?