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

不同父层的相同Docker镜像层是否会重复存储与推送?

Docker overlay2存储驱动下的镜像层复用与推送问题

本地存储层面:顶层B的内容是否重复存储?

不会重复存储。Docker的镜像层是**基于内容哈希(SHA256)**识别的,不管顶层B依赖的底层是A还是AA,只要B层的内容完全一致,它的哈希值就相同。overlay2存储驱动会直接复用已存在的B层文件,不会在本地磁盘生成重复副本。

构建时如何复用内容?

你提到的缓存失效是指构建指令上下文或基础镜像变化时,后续层会重新执行构建,但这和层内容复用是两码事:

  • 只要构建顶层B的Dockerfile指令和之前完全一致,且构建上下文里的文件没有变化,即使底层换成了AA,Docker在构建完AA层后,会检查本地是否存在内容哈希匹配的B层,若存在则直接复用该层,无需重新生成内容,只是把新镜像的层指针指向已有的B层。
  • 若构建B层的指令或上下文有变化,但最终生成的内容和原B层完全一致,依然会复用已有的层文件。

镜像推送时:顶层B会被推送两次吗?

不会。远程镜像仓库同样通过层的哈希值识别内容:

  • 推送第一个包含B层的镜像时,仓库会存储B层;
  • 推送第二个依赖AA+B的镜像时,仓库检测到B层的哈希已存在,只会推送AA层,跳过B层的上传。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:20:49