Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dockerhub:列出给定图像的所有可用版本?_Docker_Dockerhub - Fatal编程技术网

Dockerhub:列出给定图像的所有可用版本?

Dockerhub:列出给定图像的所有可用版本?,docker,dockerhub,Docker,Dockerhub,我正在寻找一种方法来列出Dockerhub中所有公开可用的图像版本。有没有办法做到这一点 具体来说,我对openjdk:8-jdk-alpine图像感兴趣 Dockerhub通常只列出每个图像的最新版本,并且没有链接到历史版本。例如,它目前是8u191-jdk-alpine3.8: 但是,如果我们知道旧版本的图像摘要ID,则可以提取旧版本: openjdk:8-jdk-alpine@sha256:1fd5a77d82536c88486e526da26ae79b6cd8a14006eb3da3a

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

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

Dockerhub通常只列出每个图像的最新版本,并且没有链接到历史版本。例如,它目前是
8u191-jdk-alpine3.8

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

openjdk:8-jdk-alpine@sha256:1fd5a77d82536c88486e526da26ae79b6cd8a14006eb3da3a25eb8d2d682ccd6
openjdk:8-jdk-alpine@sha256:c5c705b462abab858066d412b3f871865684d8f837571c98b68e78c505dc7549
幸运的是,我通过谷歌
openjdk8 alpine digest
找到了openjdk8的这些摘要(Java版本分别为1.8.0_171和1.8.0_151),并查看了github门票,其中包括图片摘要

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


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

你不需要摘要来提取“旧”图像,你宁愿使用它们的标签(即使它们没有显示在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'
如果您不能/不想安装(操作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 | 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'