Docker 镜像标签查询笔记

本文档记录了如何使用 curljq 命令查询 Docker Hub 或私有仓库中镜像的可用版本(Tags),以及相关的筛选和操作方法。

核心命令

基础命令结构如下,通过替换 library/node 为其他镜像名(如 library/nginx, library/python),可以查询不同镜像的标签。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=50" | jq -r '.results[].name'

这个命令会查询 joyqi/typecho 仓库,并列出前50个标签:

curl -s "https://registry.hub.docker.com/v2/repositories/joyqi/typecho/tags/?page_size=50" | jq -r '.results[].name'

参数说明

page_size=50:指定每页返回的结果数量。若需要更多结果,可调整此数值(例如 page_size=100),或处理API的分页机制。

library/node:代表 Docker 官方镜像 node。查询其他镜像时替换此路径,例如 library/nginxlibrary/python
"https://registry.hub.docker.com/v2/repositories/joyqi/typecho/tags/?page_size=50":这是查询标签的API地址。其中 joyqi/typecho 就是你需要查询的镜像仓库路径。
jq -r '.results[].name':使用 jq 工具解析JSON响应,提取并输出每个标签的名称,-r 参数输出原始字符串(不带引号)。

常用查询示例

查询全部标签

此命令会返回指定数量的标签列表。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=100" | jq -r '.results[].name'

筛选包含特定关键词的标签

使用 grep 进行关键词过滤,例如筛选所有 Alpine 镜像版本。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=50" | jq -r '.results[].name' | grep alpine

筛选特定大版本

结合 grep 和正则表达式筛选特定主版本号,例如筛选所有包含 20 的标签。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=50" | jq -r '.results[].name' | grep 20

筛选并排除特定内容

例如筛选 Alpine 标签,但排除 Alpine 3.24 版本。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=50" | jq -r '.results[].name' | grep alpine | grep -v "3.24"

版本排序

将结果按版本号排序。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=50" | jq -r '.results[].name' | grep alpine | sort -V

使用 jq 直接过滤

若不使用 grep,可借助 jqselect 函数在 JSON 解析阶段完成过滤。

# 筛选包含 "alpine" 的标签
curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/?page_size=50" | jq -r '.results[].name | select(contains("alpine"))'

查询官方 Docker Hub 源

如果默认的 registry.hub.docker.com 响应不完整或网络受限,可尝试直接查询 Docker Hub 的官方 Registry API。此方式有时能获取更全的版本列表,但需要稳定的网络环境。

curl -s "https://registry-1.docker.io/v2/library/node/tags/list?page_size=100" | jq -r '.tags[]' | grep alpine

查看镜像标签详情

获取某个特定标签的详细信息,包括其大小、最后更新时间等。

curl -s "https://registry.hub.docker.com/v2/repositories/library/node/tags/latest" | jq

常见镜像查询

可将以下示例中的 library/node 替换为需要的镜像路径。

  • Nginx: library/nginx
  • Python: library/python
  • Alpine: library/alpine

前置条件

执行上述命令需要系统已安装以下工具:

# Debian/Ubuntu
apt install curl jq -y

# CentOS/RHEL
yum install curl jq -y

# Alpine
apk add curl jq

标签: none

添加新评论