我在哪里可以找到docker图像的sha256代码?

问题描述 投票:46回答:7

我想使用他们的sha256代码拉出centos,tomcat,...的图像

docker pull myimage@sha256:0ecb2ad60

但我找不到sha256代码可以在任何地方使用。

我检查了dockerhub存储库中有关sha256代码的任何提示,但找不到任何。我按标签下载了图片

docker pull tomcat:7-jre8

并使用qazxsw poi检查图像以查看元数据中是否有sha256代码,但没有(添加图像的sha256代码可能会更改sha256代码)。

我是否必须自己计算图像的sha256代码并使用它?

docker docker-registry
7个回答
51
投票

最新答案

在评论中由OhJeez建议编辑。

docker inspect

原始答案

我相信你也可以使用它

docker inspect --format='{{index .RepoDigests 0}}' $IMAGE

仅适用于Docker 1.9,如果图像最初是由摘要提取的。 docker inspect --format='{{.RepoDigests}}' $IMAGE


33
投票

你可以通过Details are on the docker issue tracker.得到它

docker images --digests

15
投票

刚看到它:

当我拉图像时,sha256代码显示在输出的底部(Digest:sha ....):

REPOSITORY          TAG    DIGEST                                                                    IMAGE ID     CREATED        SIZE
docker/ucp-agent    2.1.0  sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3   583407a61900 3 weeks ago    22.3 MB

这个沙码

偏移量:4Suys 1Vsas 0Sheep 431J 1392Sabdab 0Defe 192Ffia 1898Details 0V 199Dasiddhhh 0

可用于随后拉动图像

docker pull tomcat @ sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

这样,您可以确保图像不会更改,并且可以安全地用于生产。


4
投票

除了现有答案之外,您还可以在执行docker pull tomcat:7-jre8 7-jre8: Pulling from library/tomcat 902b87aaaec9: Already exists 9a61b6b1315e: Already exists ... 4dcef5c50d60: Already exists Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f Status: Image is up to date for tomcat:7-jre8 时使用--digests选项来获取所有图像的摘要列表。

docker images

您可以添加grep以进一步向下钻取

docker images --digests

3
投票

这应该是Id领域,你可以在旧的docker images --digests | grep tomcat deprecated中看到

Docker Hub API

响应示例:

GET /v1/repositories/foo/bar/images HTTP/1.1
  Host: index.docker.io
  Accept: application/json

Parameters:

namespace – the namespace for the repo
repo_name – the name for the repo

但是:这不是现在用HTTP/1.1 200 Vary: Accept Content-Type: application/json [{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f", "checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"}, {"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds", "checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}] 工作的方式。 见new docker distribution

issue 628: "Get image ID with tag name"注册表响应/v1/用于列出图像ID以及标记句柄。 /repositories/<repo>/tags似乎只给出了处理。

获取ID以与本地找到的ID进行比较会很有用。我可以找到ID的唯一地方是清单的/v2/部分(这对于我想要的信息来说是过度杀伤)

目前(2015年中)的答案是:

对于图像存储在后端的方式,V1 API的这种属性在计算上非常昂贵。仅枚举标记名称以避免二次查找。 此外,V2 API不处理图像ID。相反,它使用摘要来识别图层,这些图层可以作为图层的属性进行计算,并且可以独立验证。


1
投票

正如@zelphir所提到的,使用摘要不是一个好方法,因为它不存在于仅本地图像。我假设图像ID sha是标签/拉/推等最准确和最一致的。

v1Compat

诀窍。


0
投票

再次发布docker inspect --format='{{index .Id}}' $IMAGE ,你会得到你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.