Docker非悬垂镜像的中间镜像是否属悬垂镜像?docker image prune会删除吗?
关于Docker中间镜像与
docker image prune的疑问解答 - 首先明确:非悬垂镜像的中间镜像不属于悬垂镜像。
- 悬垂镜像的定义是:没有任何标签(显示为
<none>:<none>),且没有被其他镜像或容器引用的镜像。而构建过程中产生的中间镜像,会被上层镜像(包括你最终构建出的带标签镜像)直接引用,所以它们不在悬垂镜像的范畴里。
docker image prune的行为
默认执行docker image prune时,只会清理悬垂镜像。那些被最终镜像或其他镜像依赖的中间镜像,完全不会被这个命令删除——这正是你想要的结果。
关于构建缓存的补充
Docker的镜像构建是基于分层缓存机制的:
- 只要Dockerfile中某一层的指令(以及对应的构建上下文内容)没有变化,构建时就会直接复用之前生成的中间镜像。
- 如果你修改了Dockerfile中间某一层的指令,那么只有该层及之后的层会重新构建,之前未修改的层依然会复用缓存的中间镜像,不需要从头开始构建。
内容的提问来源于stack exchange,提问作者Gabriel Devillers
相关产品推荐
相关产品推荐

