【问题标题】:Does the parent image of a Docker image get implicitly pulled from its repository if you run an already-built docker image?如果您运行已构建的 Docker 映像,Docker 映像的父映像是否会从其存储库中隐式提取?
【发布时间】:2021-05-20 08:27:14
【问题描述】:

如果您拉取并运行已构建和上传的自定义 docker 镜像,是否也需要再次拉取 docker 镜像的父镜像,即 Dockerfile 中“FROM”之后的镜像源?还是父镜像已经嵌入到子 docker 镜像中?

我不是在这里谈论 docker build 步骤,我只是在谈论拉取构建的图像并在 docker 引擎中运行它。

编辑:也不是在谈论手动拉动。只是询问 docker 引擎是否自动拉取。

编辑:我相信父图像是嵌入的。但是在我的测试中,某些层似乎是从其父图像的存储库中提取的。请注意,这不是结论性的。很可能是父镜像的 Dockerfile 正在做一些需要连接到它自己的存储库的事情。

【问题讨论】:

  • Docker 在运行镜像时不会再次拉取父层。这可能会有所帮助:jfrog.com/knowledge-base/…
  • @MehdiFathi,谢谢。我已经看过了。尽管该页面包含有关 Docker 的基本信息,但它并没有说明父映像是否已被 docker 引擎隐式和内部拉取。

标签: docker containers


【解决方案1】:

它是您构建的镜像的一部分,因此您无需再次拉取它即可使用构建的镜像运行容器

【讨论】:

    【解决方案2】:

    在这里回答我自己的问题。

    一个 docker 镜像可以有多个层。如果图层的某些映像不可分发,则这些图层将不会在您的注册表中,并且必须从其原始位置中提取它们,例如来自 Microsoft Container Registry 的 Windows 基础映像等...

    如果您希望从您自己的注册表中提取所有基础层映像,则必须使用配置它

    {
       "allow-nondistributable-artifacts": ["myregistrydomain.com:5000"]
    }
    

    根据来自 docker 的 this article。 然后,当您构建镜像并将其推送到该注册表时,它将包含所有基础镜像 - 甚至是不可分发的镜像。

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      相关资源
      最近更新 更多