gpt4 book ai didi

docker - 为什么我新创建的 docker 没有摘要?

转载 作者:行者123 更新时间:2023-12-04 06:55:41 24 4
gpt4 key购买 nike

我一直在关注Docker tutorial here ,并通过提交对现有图像的更改并用三个不同的标签标记它,在我的本地 OSX 机器上构建了一个测试图像:

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
adamatan/sinatra devel fccb6b4d21b4 8 minutes ago 469.5 MB
adamatan/sinatra junk fccb6b4d21b4 8 minutes ago 469.5 MB
adamatan/sinatra latest fccb6b4d21b4 8 minutes ago 469.5 MB

但是,这些图像都没有摘要:
# docker images --digests adamatan/sinatra
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
adamatan/sinatra devel <none> fccb6b4d21b4 9 minutes ago 469.5 MB
adamatan/sinatra junk <none> fccb6b4d21b4 9 minutes ago 469.5 MB
adamatan/sinatra latest <none> fccb6b4d21b4 9 minutes ago 469.5 MB

我使用 Dockerfile 创建的其他测试图像确实有摘要。

为什么有些图像有摘要而有些没有?它是否与创建图像的方式有关(Dockerfile 与否)?

最佳答案

首先,请记住,摘要可以代表 manifest ,图层或它们的组合(我们通常称该组合为图像)。
Manifest是 Docker 注册表 V2 中引入的一个新术语。这是从 Docker Registry V2 slides 获取的简短描述第 21 页 ~ 第 23 页:

  • [Manifest] describes the components of an image in a single object
    • Layers can be fetched immediately, in parallel.


当您使用命令 docker images --digests 获取摘要时,这里的digest是image manifest的SHA256 hash,image ID是本地image JSON配置的hash码(这个配置和manifest不同)。在这种情况下,如果图像没有关联的 list ,则该图像的摘要将为“无”。

通常,两种情况可能会使图像没有关联的 list :
  • 此镜像尚未推送到 V2 注册表或从中提取。
  • 此镜像已从 V1 注册表中提取。

  • 要生成 list ,最简单的方法是将镜像推送到 V2 注册表(V1 注册表不起作用)。 Docker 客户端将在本地生成一个 list ,然后将其与图像层一起推送到注册表。当你拉回图像时,图像会有一个 list 。

    一旦 list 存在,您的图像摘要不应为“无”。

    关于docker - 为什么我新创建的 docker 没有摘要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39811230/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com