【问题标题】:Dockerhub: listing all available versions of a given image?Dockerhub:列出给定图像的所有可用版本?
【发布时间】:2019-01-29 10:09:29
【问题描述】:

我正在寻找一种方法来列出来自 Dockerhub 的映像的所有公开可用版本。有没有办法做到这一点?

具体来说,我对openjdk:8-jdk-alpine 图像感兴趣。

Dockerhub 通常只列出每个镜像的最新版本,并且没有指向历史版本的链接。对于openjdk,当前为8u191-jdk-alpine3.8

但是,如果我们知道它们的图像摘要 ID,则可以提取旧版本:

openjdk:8-jdk-alpine@sha256:1fd5a77d82536c88486e526da26ae79b6cd8a14006eb3da3a25eb8d2d682ccd6
openjdk:8-jdk-alpine@sha256:c5c705b462abab858066d412b3f871865684d8f837571c98b68e78c505dc7549

幸运的是,我通过谷歌搜索 openjdk8 alpine digest 并查看包含图像摘要的 github 票证,能够找到 OpenJDK 8 的这些摘要(Java 版本分别为 1.8.0_171 和 1.8.0_151)。

但是,有没有一种系统的方法来列出所有公开可用的摘要?

查看docker search 文档,似乎没有列出图像版本的选项,只能按名称搜索。

【问题讨论】:

    标签: docker dockerhub


    【解决方案1】:

    你不需要摘要来提取“旧”图像,你宁愿使用它们的标签(即使它们没有显示在 Docker Hub 中)。

    我使用以下命令检索特定图像的标签,解析https://registry.hub.docker.com/v1/repositories/$REPOSITORY/tags 的输出:

    REPOSITORY=openjdk # can be "<registry>/<image_name>" ("google/cloud-sdk" for example)
    wget -q https://registry.hub.docker.com/v1/repositories/$REPOSITORY/tags -O - | \
        jq -r '.[].name'
    

    REPOSITORY=openjdk(撰写本文时有 1593 个标签)的结果如下所示:

    latest
    10
    10-ea
    10-ea-32
    10-ea-32-experimental
    10-ea-32-jdk
    10-ea-32-jdk-experimental
    10-ea-32-jdk-slim
    10-ea-32-jdk-slim-experimental
    10-ea-32-jre
    [...]
    

    如果您不能/不想安装 jq(操作 JSON 的工具),那么您可以使用:

    wget -q https://registry.hub.docker.com/v1/repositories/$REPOSITORY/tags -O - | \
        sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | \
        tr '}' '\n'  | \
        awk -F: '{print $3}'
    

    (我很确定我从另一个问题中得到了这个命令,但我找不到在哪里)

    你当然可以过滤这条命令的输出,只保留你感兴趣的标签:

    wget -q https://registry.hub.docker.com/v1/repositories/$REPOSITORY/tags -O - | \
        jq -r '.[].name | select(match("^8.*jdk-alpine"))'
    

    或:

    wget -q https://registry.hub.docker.com/v1/repositories/$REPOSITORY/tags -O - | \
        jq -r '.[].name' \
        grep -E '^8.*jdk-alpine'
    

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2020-01-19
      相关资源
      最近更新 更多