如何一次性删除本地所有 Docker 镜像?

先删全部容器 docker rm -vf $(docker ps -aq),再删全部镜像 docker rmi -f $(docker images -aq);或一条 docker system prune -a 清掉未使用资源。本文给出各平台命令与安全提醒。

最佳实践
如何一次性删除本地所有 Docker 镜像?封面

做法:先删除所有容器(运行中的镜像无法删除),再删除所有镜像——docker rm -vf $(docker ps -aq) 然后 docker rmi -f $(docker images -aq)。更省事的做法是 docker system prune -a,一键清理所有停止的容器、未使用的镜像、网络与构建缓存。

分步清理(精确控制)

1. 删除全部容器

docker rm -vf $(docker ps -aq)

-v 顺带删除匿名卷,-f 强制删运行中的容器。

2. 删除全部镜像

docker rmi -f $(docker images -aq)

顺序不能反:有容器(哪怕已停止)引用的镜像删不掉。

一键清理(推荐)

docker system prune -a --volumes
  • -a:删除所有未被容器使用的镜像(不只是悬空层)
  • --volumes:连未使用的卷一起删(数据卷里的数据会丢,慎用

想保守一点就去掉 --volumes,只清容器、镜像、网络、构建缓存。

Windows PowerShell 写法

PowerShell 不支持 $(...) 子命令,用管道:

docker ps -aq | % { docker rm -vf $_ }
docker images -aq | % { docker rmi -f $_ }

安全提醒

  1. 这些命令不可恢复,执行前确认没有还在用的容器和数据卷。
  2. 想保留某些镜像,先用 docker images 列出,把要留的排除掉:docker rmi $(docker images -q | grep -v 要保留的ID)
  3. CI 构建机上建议定期 docker system prune -f 做日常回收,避免磁盘撑爆。

观测云对照

磁盘水位要有告警兜底。 Docker 磁盘膨胀是宿主机常见故障。DataKit 采集主机磁盘指标后用监控器设阈值告警,在 prune 失效、磁盘写满之前就收到通知。

常见问题(FAQ)

Q:报错 image is being used by stopped container?
A:还有停止的容器引用该镜像,先 docker rm $(docker ps -aq) 清容器。

Q:dangling()镜像是什么?
A:重新构建后失去标签的旧镜像层,用 docker image prune 专门清理。

Q:构建缓存怎么单独清?
A:docker builder prune -a,不影响在用的镜像。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台