podman查找镜像标签1
Docker 镜像标签查询笔记
本文档记录了如何使用 curl 和 jq 命令查询 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/nginx、library/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,可借助 jq 的 select 函数在 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