繁体   English   中英

如何从Docker镜像获取不可变标识符(摘要)列表?

[英]How to get a list of immutable identifier (digest) from a Docker image?

我在dockerhub中有一个Docker镜像 ,并且已经多次构建,因为我需要将PHP版本更新到最新版本。 我需要使用该图像的先前版本,我认为要采用的方法是使用不可变标识符aka digest。

是关于如何通过它的摘要拉出给定图像的文档,但我找不到从该图像获取所有摘要的方法。

如果双击给定的构建,您将获得某些信息,例如构建代码,例如: berpxpunhmqe7bqh6lce5ub但我认为不是这样的摘要。

如何找到给定构建的摘要?

假设您有以前版本的标记/标识符和/或在本地图像缓存中有版本,则可以使用docker image inspect来查找要使用pull by digest的摘要 ,如下所示:

$ docker image inspect --format "{{.RepoDigests}}" alpine:3.6
[alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab]

在这个例子中,我正在查看高山图像的3.6标签,响应是一个字符串,我可以使用像docker pull这样的命令:

$ docker pull alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab
sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab: Pulling from library/alpine
Digest: sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab
Status: Image is up to date for alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab

您的特定图像的潜在问题是,看起来latest标记已用于所有构建,因此除非您拥有旧图像的本地缓存,否则可能很难找到旧版sha256摘要对先前版本的引用。

如果尚未通过docker system prune或其他清理实用程序删除本地缓存信息,则有几种方法可以找到先前映像的摘要:

  1. docker images -a | grep <image name> docker images -a | grep <image name>可用于显示所有图像,包括未标记的图像。 下面的示例显示了更新的ubuntu:latest ,我仍然可以访问旧图像。 使用该ID(不是摘要),我可以使用相同的docker image inspect --format '{{.RepoDigests}}' <image ID>来检索ubuntu旧版“build”的实际摘要。

  2. 如果我有一个使用先前版本的图像运行或退出的容器,我可以通过首先检查容器并找到图像ID ,然后检查上面的图像ID并检索旧图像来找到该图像的摘要。消化。 在这个有点人为的例子中,我有一个退出的容器, 1edd .. ,我检查找到图像ID ,它仍然被有效标记,但是使用它的id然后我可以使用image inspect来获取摘要,即使它不再在我的图片缓存中标记。

例1:

$ docker images -a | grep ubuntu
ubuntu       latest      747cb2d60bbe   3 weeks ago    122MB`
ubuntu       <none>      ebcd9d4fca80   5 months ago   118MB
$ docker image inspect --format '{{.RepoDigests}}' ebcd9
 [ubuntu@sha256:382452f82a8bbd34443b2c727650af46aced0f94a44463c62a9848133ecb1aa8]

例2:

$ docker ps -aq
1edd14b528db
$ docker container inspect 1edd | grep Image
    "Image": "sha256:76da55c8019d7a47c347c0dceb7a6591144d232a7dd616242a367b8bed18ecbc",
        "Image": "alpine:3.6",
$ docker image inspect --format '{{.RepoDigests}}' 76da55
[alpine@sha256:f006ecbb824d87947d0b51ab8488634bf69fe4094959d935c0c103f4820a417d]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM