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

时间:2017-11-02 01:08:14

标签: docker digest dockerhub

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

Here是如何通过摘要提取给定图像的文档,但我无法找到从该图像中获取所有摘要的方法。

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

如何找到给定版本的摘要?

1 个答案:

答案 0 :(得分:3)

假设您拥有以前版本的标记/标识符和/或在本地图像缓存中有版本,则可以使用{{1>查找用于 pull by digest 的摘要。如下:

docker image inspect

在这个示例中,我查看 alpine 图像的 3.6 标记,响应是一个字符串,我可以使用{{1}之类的命令}}:

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

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

如果未通过$ docker pull alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab: Pulling from library/alpine Digest: sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab Status: Image is up to date for alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 或其他清理实用程序删除本地缓存信息,有几种方法可以找到先前图像的摘要:

  1. latest可用于显示所有图像,包括未标记的图像。下面的示例显示了更新的 ubuntu:latest ,我仍然可以访问旧图像。使用该ID(不是摘要),我可以使用相同的docker system prune来检索旧版"版本的实际摘要。 ubuntu。

  2. 如果我有一个使用先前版本的图像运行或退出的容器,我可以通过首先检查容器并找到图像ID 来找到该图像的摘要,然后检查上面的图像ID 并检索旧图像的摘要。在这个有点人为的例子中,我有一个退出的容器, 1edd .. ,我检查它以找到图像ID ,它仍然被有效标记,但使用它&# 39; s id 然后我可以使用docker images -a | grep <image name>来获取摘要,即使它不再在我的图像缓存中标记。

  3. 示例1:

    docker image inspect --format '{{.RepoDigests}}' <image ID>

    示例2:

    image inspect