gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:02:26 38 4
gpt4 key购买 nike

我有一个 Docker image在 dockerhub 中,这已经构建了几次,因为我需要将 PHP 版本更新为最新版本。我需要使用该图像的先前版本,我认为要走的路是使用不可变标识符(即摘要)。

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

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

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

最佳答案

假设您有先前版本的标签/标识符和/或本地镜像缓存中有一个版本,则可以通过 docker image inspect 找到用于按摘要拉取的摘要。如下:

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

在这个例子中,我正在查看 3.6 的标签 Alpine 图像,并且响应是一个字符串,我可以将其与 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 删除本地缓存信息,有几种可能的方法可以找到先前图像的摘要。或其他清理实用程序:
  • docker images -a | grep <image name>可用于显示所有图像,包括未标记的图像。下面的示例显示了更新的 ubuntu:最新 我仍然可以访问旧图像。使用该 ID(不是摘要),我可以使用相同的 docker image inspect --format '{{.RepoDigests}}' <image ID>检索较旧的ubuntu“构建”的实际摘要。
  • 如果我有一个容器正在运行或使用先前版本的镜像退出,我可以通过首先检查容器并找到 来找到该镜像的摘要。图片 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]

    关于docker - 如何从 Docker 镜像中获取不可变标识符(摘要)列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47066021/

    38 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com