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

如何查找Docker镜像压缩层在本地文件系统的存储位置

本地Docker压缩镜像层路径及manifest定位方法

首先明确两个容易混淆的概念,避免找错位置:

  • manifest.json里记录的层sha256是压缩态tar包的哈希(distribution digest),是镜像拉取时和镜像仓库做校验用的值,对应你要找的压缩版镜像层
  • 本地存储驱动挂载用的是解压后的层,对应的哈希叫diffid,和前者不是同一套值,不要搞混

具体定位步骤

  • 第一步:确认当前Docker使用的存储驱动,执行以下命令查询:
docker info | grep "Storage Driver"

绝大多数默认安装的环境返回值都是overlay2,后续路径里涉及存储驱动的字段,替换成你实际查询到的结果即可。

  • 第二步:定位压缩层存储根目录,所有未被GC清理的原始压缩层,默认存放在:
/var/lib/docker/image/<你的存储驱动名>/distribution/blobstores/sha256/
  • 第三步:根据manifest里的sha256值匹配文件:
    根目录下的一级子目录名,是压缩层sha256值去掉sha256:前缀后的前2位十六进制字符;进入对应子目录后,文件名就是sha256值剩下的62位字符,该文件就是gzip压缩格式的原始镜像层tar包。

举个实际匹配例子:如果manifest.json里记录某层的sha256为sha256:8a39c39b7c0d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f,那它的完整存放路径就是:

/var/lib/docker/image/overlay2/distribution/blobstores/sha256/8a/39c39b7c0d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f

注意事项

如果在对应路径找不到目标文件,是因为Docker默认会在镜像拉取、校验、解压全流程完成后,定期回收无引用的压缩层缓存,这种情况下本地已经没有留存压缩态的层文件。你可以选择重新拉取镜像,在缓存未被清理时复制对应文件,也可以通过docker save <镜像名>:<标签>导出镜像包,解压导出包后就能在包内的blobs目录下找到完整的压缩层文件。

如果你误找了解压后的运行时层,它的存放路径是/var/lib/docker/overlay2/,目录名为层的cache-id,需要先通过层diffid到layerdb目录下查询对应cache-id才能定位,和manifest里记录的压缩层哈希不通用,不要直接用压缩层sha256去该路径下查找。

内容的提问来源于stack exchange,提问作者Or-G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:18:03