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

如何用skopeo inspect查询Harbor中Docker镜像的拉取时间?

关于获取Docker镜像拉取时间的说明

首先要明确:Docker镜像的元数据(无论是远程仓库还是本地镜像)本身并不包含「拉取时间」字段——created字段是镜像构建完成的时间,而拉取时间属于本地操作记录或仓库的访问统计数据,不属于镜像本身的属性。

一、用Skopeo无法直接获取拉取时间的原因

Skopeo的inspect命令只能获取镜像本身的元数据(包括构建时间、作者、架构等),这些数据是镜像被推送到仓库时就固定下来的,和拉取操作无关,所以自然没有pulled字段。

二、获取拉取时间的可行方案

根据你的需求场景,分两种情况处理:

1. 记录自己本地拉取镜像的时间

如果你需要记录自己执行拉取操作的时间,最简单的方式是在执行Skopeo拉取命令时,同时记录当前系统时间:

# 记录拉取开始时间
pull_start_time=$(date +"%Y-%m-%d %H:%M:%S")
# 执行拉取操作
skopeo copy docker://${image_path}:${tag} docker-daemon:${image_path}:${tag} --tls-verify=false
# 记录拉取结束时间(可选)
pull_end_time=$(date +"%Y-%m-%d %H:%M:%S")
# 保存到日志文件
echo "镜像 ${image_path}:${tag} 拉取时间:开始于 ${pull_start_time},结束于 ${pull_end_time}" >> image_pull_logs.txt

如果你已经拉取过镜像到本地,想回溯拉取时间,可以查看本地Docker存储目录下的文件修改时间(路径可能因存储驱动不同而变化,以overlay2为例):

# 先获取本地镜像的ID
image_id=$(docker inspect --format="{{.ID}}" ${image_path}:${tag})
# 查看镜像元数据文件的修改时间(近似拉取时间)
ls -l /var/lib/docker/image/overlay2/imagedb/content/sha256/${image_id#sha256:}

2. 获取远程仓库中镜像的被拉取时间(仅部分私有仓库支持)

标准的Docker Registry v2 API并没有提供镜像拉取时间的查询接口,公共仓库(如Docker Hub)也不会暴露这类统计数据。但部分私有仓库(如Harbor)提供了扩展API,可以查询镜像的下载记录:

  • 以Harbor为例,可通过其API查询镜像的下载日志,从中提取拉取时间(具体API需参考Harbor官方文档,这里仅作示例):
curl -u "username:password" -k https://${harbor_host}/api/v2.0/projects/${project_name}/repositories/${repo_name}/artifacts/${tag}/access_logs

返回结果中会包含每次拉取的时间戳信息。

三、用Curl查询的局限

用Curl调用Docker Registry的标准API,只能获取镜像的manifest或config元数据,这些内容里同样只有created字段,没有拉取时间相关信息,示例命令如下:

# 获取镜像的manifest(包含镜像层信息)
curl -k -H "Accept: application/vnd.docker.distribution.manifest.v2+json" https://${registry_host}/v2/${image_path}/manifests/${tag}

# 获取镜像的config(包含构建时间等元数据)
# 先从manifest中提取config的digest
config_digest=$(curl -s -k -H "Accept: application/vnd.docker.distribution.manifest.v2+json" https://${registry_host}/v2/${image_path}/manifests/${tag} | jq -r '.config.digest')
# 再获取config内容
curl -k -H "Accept: application/vnd.docker.container.image.v1+json" https://${registry_host}/v2/${image_path}/blobs/${config_digest}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:15:50