如何获取远程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
相关产品推荐
相关产品推荐

