Phi*_*l E 15
的清单类型是有效名为/标记图像的JSON-表示描述.此描述(清单)旨在供容器运行时(如Docker引擎)使用.
任何声称具有Docker分发v2 API/v2.2映像规范支持的注册表或运行时都将与各种清单类型进行交互以找出:
Dockerfile用于构建映像的内容中表示).作为前面提到的答案,docker pull与注册表通信的客户端(例如实现)将通过Docker v2 API进行交互,以首先获取特定图像/标记的清单,然后确定要下载的内容以及能够运行基于此图像的容器.v2清单格式没有编码到其中的签名,但是使用诸如公证服务器之类的工具的外部验证可以用于验证内容的相同"blob"/散列上的外部签名以获得完全加密信任.Docker称之为"Docker Content Trust",但在与注册表通信时不需要它,在与图像注册表通信时也不是API流的一部分.
关于v2.2规范中清单的另一个细节:不仅有标准清单类型,还有清单列表类型,它允许注册表在单个" image:tag"引用下表示对多个平台(CPU或操作系统变体)的支持.清单列表只有一个平台条目列表,其中包含现有清单的重定向器,以便引擎可以检索该特定平台/体系结构组合的正确组件.在今天的DockerHub中,所有官方图像现在都是清单列表,允许使用相同的图像name:tag组合支持许多平台.我有一个工具,可以查询注册表中的条目,并显示它们是否是清单列表,还转储清单的内容 - 清单列表和"常规"清单.您可以在manifest-tool GitHub存储库中阅读更多内容.
在关于容器设计的讨论中,幻灯片12 还有一个很好的图形表示,表明清单列表如何链接到清单,表示特定平台的图像配置和图层.
An image是JSON清单和各个图层文件的组合。提取图像的过程集中在检索这两个组件上。因此,当您提取图像文件时:
取得清单:
GET /v2/<name>/manifests/<reference>
Run Code Online (Sandbox Code Playgroud)当清单出现时,客户端必须验证签名以确保名称和层有效。
然后,客户端将使用摘要下载各个层。层存储在为blobs将在V2注册表API,通过他们的消化键。
| 归档时间: |
|
| 查看次数: |
8279 次 |
| 最近记录: |