首页/云/Docker 容器速查/docker image prune 清理未使用镜像
镜像与构建107 条

docker image prune 清理未使用镜像

清理未被任何容器使用的镜像:默认只删悬空(dangling)镜像,加 -a 删除所有未被引用镜像,可用时间过滤控制影响面。

Docker 容器速查云更新于 2026-10-13

image prune 是什么

docker image prune 清理没有被任何容器使用的镜像:默认只删悬空镜像,也就是没有标签的中间层;加 -a 会连有标签但当前没有容器引用的镜像一起删除。执行前可以用时间与标签过滤把范围收紧。

基本信息

用途批量清理镜像,释放磁盘空间
语法docker image prune [-a] [--filter until=168h] [--filter label!=keep] [-f]
默认行为只删悬空镜像,影响面小
-a 的影响连有标签但无容器使用的镜像一起删
前置确认先看 docker images 与 docker ps -a 的引用关系

典型使用场景

  • 构建机日常清理:每次构建都会产生悬空镜像,长期不清理会吃掉大量磁盘
  • 磁盘告警时在确认镜像可重建的前提下释放空间
  • 保留回滚基线:用 keep 之类的标签保护旧版本,再批量清理其余镜像
  • 按时间清理,只删超龄且未被使用的镜像,减小影响面
  • 控制 CI 构建机的磁盘增长,把清理写进流水线收尾步骤
  • 清理前先看 docker system df,判断空间主要被镜像、卷还是构建缓存占用

示例

示例
docker images                                    # 先看清有哪些镜像与标签
docker image prune                               # 只删悬空镜像,影响最小
docker image prune -a --filter 'until=168h'      # 删除七天前且未被使用的镜像
docker image prune -a -f --filter 'label!=keep'  # 保留带 keep 标签的镜像再清理
docker system df                                 # 看空间到底被什么占用

清理命令的范围差别

命令删除范围风险
image prune悬空镜像影响小,可例行执行
image prune -a所有未被容器使用的镜像有标签的版本一并删除,回滚基线可能丢失
image prune --filter until超龄的悬空镜像最温和的例行方式
volume prune未被使用的卷数据直接删除
system prune -a容器、网络与未使用镜像影响面最大,生产机上慎用
-a 会删掉有标签但当前没有容器使用的镜像,多项目共享的构建机上先确认哪些镜像还在回滚窗口内再执行。
时间过滤针对的是“多久没有被使用”,不是“多久前创建”;被容器引用过的镜像时间会刷新,不要把它当版本保护手段。
磁盘占用不只来自镜像:docker system df 里的构建缓存一栏经常比镜像还大,清理镜像之前先看看缓存占了多少。

易错点

  • 执行 -a 把还在回滚窗口内的旧版本镜像删掉,出事时无法回滚,先给要保留的版本打标签再清理
  • 以为 until 能保护回滚基线:它只按最近使用时间过滤,基线的保护要靠标签约定
  • 多项目共享的构建机上直接 -a,把其他项目准备部署但尚未创建容器的镜像删掉,后续部署还得重新拉取
  • 磁盘告警时只盯着镜像,忽略构建缓存与数据卷的占用,清完发现空间增长依旧

数据来源与参考

  • Docker 官方 CLI 参考:docker image prune(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌