You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过API获取latest标签Docker镜像的基础OS与版本信息?

获取Docker镜像的固定版本与基础系统信息(无需拉取镜像)

一、获取latest标签对应的固定版本与镜像标识

你可以通过Docker Hub的官方v2 API直接查询,无需拉取镜像:

  1. 获取镜像Manifest(拿到唯一标识Digest)
    用curl请求镜像的manifest,指定正确的Accept头来获取v2格式的响应:

    curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" https://registry-1.docker.io/v2/nginx/manifests/latest
    

    响应的JSON中:

    • digest字段是整个镜像的唯一哈希,你可以用nginx@sha256:xxx的格式来固定镜像(替代nginx:latest,避免标签更新导致镜像变化);
    • config.digest是镜像配置文件的哈希,用于后续提取版本信息。
  2. 从配置文件中提取具体版本号
    用上一步得到的config.digest请求镜像的配置信息:

    curl -H "Accept: application/vnd.docker.container.image.v1+json" https://registry-1.docker.io/v2/nginx/blobs/<替换为config-digest值>
    

    在返回的JSON里,Config.Labels或Config.Env字段会包含版本信息:

    • 比如官方nginx镜像的org.opencontainers.image.version标签会直接给出具体版本(如1.25.3);
    • 部分镜像会在Env里设置版本变量(如NGINX_VERSION=1.25.3)。

二、查询镜像的基础系统信息

同样通过上述镜像配置信息获取,无需爬虫:

  • 官方镜像通常会在Config.Labels里标注基础系统,比如nginx的org.opencontainers.image.base.name字段会显示docker.io/library/debian:bookworm-slim,直接就能看出基础系统是Debian;
  • 非官方镜像如果没有这类标签,可以查看Config.Env字段:比如出现DEBIAN_FRONTEND=noninteractive说明是Debian/Ubuntu系,CENTOS_VERSION=7则对应CentOS。

注意事项

  • 私有镜像需要先获取认证令牌:请求https://auth.docker.io/token?service=registry.docker.io&scope=repository:<镜像名>:pull拿到令牌后,在请求头添加Authorization: Bearer <令牌值>;
  • 务必指定正确的Accept头,否则可能返回不完整的manifest数据。

内容的提问来源于stack exchange,提问作者fatih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:46:02