如何通过curl或gh命令获取GHCR中Docker镜像的标签?
获取GHCR.io Docker镜像标签的方法
你之前调用的API端点仅返回容器包的基本信息,要获取镜像标签需要调用版本列表端点——每个版本的metadata.container.tags字段中就包含对应的镜像标签。下面是两种可行的实现方式:
方法一:使用curl调用GitHub API
通过指定版本列表的API端点,就能获取包含标签的完整版本数据:
完整请求命令示例:
curl \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${GH_TOKEN}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/orgs/${ORG}/packages/container/${CONTAINER_IMG}/versions
如果只想提取所有标签,可搭配jq过滤结果:
curl \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${GH_TOKEN}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/orgs/${ORG}/packages/container/${CONTAINER_IMG}/versions | jq '.[] .metadata.container.tags'
注意:你的GH_TOKEN需要具备read:packages权限。
方法二:使用GitHub CLI(gh)
借助gh api命令可直接调用上述API,无需手动构造请求头:
gh api orgs/${ORG}/packages/container/${CONTAINER_IMG}/versions
同样搭配jq提取标签:
gh api orgs/${ORG}/packages/container/${CONTAINER_IMG}/versions | jq '.[] .metadata.container.tags'
如果目标是个人仓库而非组织仓库,只需把orgs/${ORG}替换为users/${USERNAME}即可。
内容的提问来源于stack exchange,提问作者Omer Sen
相关产品推荐
相关产品推荐

