我想使用他们的sha256代码拉出centos,tomcat,...的图像
docker pull myimage@sha256:0ecb2ad60
但我找不到sha256代码可以在任何地方使用。
我检查了dockerhub存储库中有关sha256代码的任何提示,但找不到任何。我按标签下载了图片
docker pull tomcat:7-jre8
并使用qazxsw poi检查图像以查看元数据中是否有sha256代码,但没有(添加图像的sha256代码可能会更改sha256代码)。
我是否必须自己计算图像的sha256代码并使用它?
在评论中由OhJeez建议编辑。
docker inspect
我相信你也可以使用它
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
仅适用于Docker 1.9,如果图像最初是由摘要提取的。 docker inspect --format='{{.RepoDigests}}' $IMAGE
你可以通过Details are on the docker issue tracker.得到它
docker images --digests
刚看到它:
当我拉图像时,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
这样,您可以确保图像不会更改,并且可以安全地用于生产。
除了现有答案之外,您还可以在执行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
这应该是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。相反,它使用摘要来识别图层,这些图层可以作为图层的属性进行计算,并且可以独立验证。
正如@zelphir所提到的,使用摘要不是一个好方法,因为它不存在于仅本地图像。我假设图像ID sha是标签/拉/推等最准确和最一致的。
v1Compat
诀窍。
再次发布docker inspect --format='{{index .Id}}' $IMAGE
,你会得到你想要的。