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

如何获取远程Docker镜像哈希?低磁盘空间下Docker镜像拉取优化

问题解答

获取远程镜像的哈希值

Docker没有提供类似docker pull --hash-only的直接命令,但可以通过以下方法获取远程镜像的哈希(与本地docker inspect返回的RepoDigests格式一致):

  • 使用docker manifest inspect解析远程镜像的摘要:

    docker manifest inspect --format='{{index .Descriptor.Digest}}' cr.yandex/12345/myimage:latest
    

    该命令无需拉取完整镜像,直接从远程仓库获取镜像的哈希值(格式为sha256:xxxxxx)。

  • 若需要包含仓库地址的完整RepoDigest格式(比如cr.yandex/12345/myimage@sha256:xxxxxx),可以拼接仓库地址和上述命令的输出:

    echo "cr.yandex/12345/myimage@$(docker manifest inspect --format='{{index .Descriptor.Digest}}' cr.yandex/12345/myimage:latest)"
    

磁盘空间极低时自动清理旧层后拉取镜像

Docker本身没有让docker pull在拉取前自动清理旧层的内置参数,但可以通过以下两种方式实现需求:

  • 拉取前手动执行清理命令:
    在执行docker pull前,先运行清理命令删除所有未使用的镜像、容器、卷等资源:

    docker system prune -af
    

    其中-a表示删除所有未被容器引用的镜像(包括未标记为latest的),-f表示跳过确认直接执行。如果只想清理镜像层,可使用更精准的命令:

    docker image prune -af
    
  • 配置Docker自动清理(Docker 23.0+版本支持):
    修改Docker守护进程配置文件/etc/docker/daemon.json,添加自动清理策略:

    {
      "auto-prune": true,
      "prune-filters": {
        "until": "24h"
      }
    }
    

    保存配置后重启Docker服务,Docker会定期自动清理超过24小时的未使用资源,避免磁盘被占满。若版本低于23.0,建议编写脚本将清理命令与拉取命令绑定执行,比如:

    #!/bin/bash
    docker system prune -af
    docker pull cr.yandex/12345/myimage:latest
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:13:23