【问题标题】:How to find (closest) tag based on image_id如何根据 image_id 查找(最近的)标签
【发布时间】:2015-12-17 15:19:07
【问题描述】:

我有 image_id fc251f2434a12eaf8370dee1bc56ab1857978cb769d64e29fea373db699823c6 和图像名称 registry,我想找到最接近的标签。

我试过查询

卷曲https://registry.hub.docker.com//v1/repositories/registry/tags

但是没有以这个哈希开头的标签。然后我试过了

卷曲https://registry.hub.docker.com//v1/repositories/registry/images

$(...){"checksum": "", "id": "fc251f2434a12eaf8370dee1bc56ab1857978cb769d64e29fea373db699823c6"}, {"checksum":(..)

找到了我要找的图片。

根据这些信息,我可以找到最近的标签吗?

【问题讨论】:

  • “最近的标签”是什么意思?这对我来说毫无意义。是否要查找该图像 ID 的所有标签?
  • 图像现在没有标记(基于第一个查询)。我猜是很久以前的latest。给定所有标签的列表,是否有可能找到最接近这张图片的标签?
  • “最接近这张图片”的说法没有意义。标签解析为图像。 ID 解析为图像。它们可以解析为相同的图像或不同的图像。没有“最近的图像”。
  • 假设您有图像列表 I=[fc24, ah32, f56a, aa45] 和标签 T=[v1->fc24,v2->aa45] 。如果您要求ah32 最接近的标签,那么答案是v1
  • 那么您想要创建日期最近的图像吗?这听起来像是一个非常糟糕的主意。

标签: docker


【解决方案1】:

如果标签在创建后被修改或删除,通常不可能找出过去哪些标签引用了给定的图像 ID。

如果是托管在docker.io/library/* 上的镜像(也称为 Docker Hub 上的“官方镜像”),您可以查看此Git repository 的历史记录。官方图像的每次推送都会生成对该 repo 的提交,因此可以通过制作本地克隆并使用git-grep 来找出指向特定图像 ID 的标签。仓库非常大,所以考虑使用git-clone--depth 选项。

就我个人而言,我从未克隆过回购。就我而言,我正在寻找官方postgres 图像的缺失标签,所以我只是在 GitHub 的 Web UI 上浏览了history of postgres's tag-details.md,直到找到在创建图像的同一天进行的提交。然后我仔细点击了每一个,最后找到了一个包含匹配图像 ID 的特定提交。

附:要找出图像的创建日期,请使用docker image ls my_image_id(相对日期)和docker image inspect my_image_id -f '{{ .Created }}'(UTC 绝对日期)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2020-10-14
    • 2018-05-30
    • 2015-11-26
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多