docker清理悬空镜像
·
一、什么是悬空镜像?
悬空镜像(Dangling Image) 是指:
没有标签(<none>:<none>)且不被任何容器引用的镜像,也无法通过名称或标签访问。
这类镜像通常是 Docker 在构建、更新或拉取镜像过程中产生的“中间产物”或“旧版本残留”。
你可以把镜像想象成“软件安装包”,而标签就像“快捷方式”。
- 正常镜像:有名字和标签 → 就像桌面上有快捷方式的程序
- 悬空镜像:安装包还在硬盘里,但快捷方式没了,你也打不开它 → 就是“废弃文件”
比如下图中的镜像:

二、悬空镜像产生的场景。
常见于以下三种场景:
场景1:重新构建镜像(最常见)
你有一个镜像叫 myapp:latest,第一次构建:
docker build -t myapp:latest .
→ 生成一个带 ID 的镜像。
然后你修改代码后再次构建:
docker build -t myapp:latest .
→ 新的镜像替换了原来的标签,旧的镜像就失去了标签 → 成为 <none>:<none> 悬空镜像。
场景2:推送/拉取覆盖
当你从 Harbor 或 Docker Hub 拉取同名镜像时,如果新版本替换了本地旧版本,旧的也可能变成悬空。
场景3:多阶段构建中的中间层
如果你用了多阶段构建(multi-stage build),某些中间构建阶段的镜像如果没有被打包进最终结果,也可能残留为悬空镜像。
三、如何清理悬空镜像?
方法1:删除所有悬空镜像(推荐)
docker image prune
系统会提示是否确认。
加 -f 跳过确认:
docker image prune -f
方法2:连同未使用的非悬空镜像一起删
docker image prune -a
这会删除所有未被容器使用的镜像,包括有名字但没在用的。
更多推荐
所有评论(0)