Docker删除所有停止的容器,一键清理

前言

用Docker久了,一堆停止的容器占磁盘,一个个删太麻烦。本文讲怎么一键清理。

一、查看所有停止的容器

先看看有多少个停止的容器:

docker ps -a

看STATUS列,显示Exited的就是停止的。

只看停止的:

docker ps -a -f status=exited

二、删除所有停止的容器

一键清理

docker container prune

输出:

Total reclaimed space: 1.2GB

直接删掉所有停止的容器。

确认提示

默认会问你:

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N]

输入y确认。

跳过确认

docker container prune -f

加个 -f 直接删,不问。

三、其他清理命令

删除所有没用的镜像

docker image prune

只删悬空镜像(dangling images),就是没有标签的。

删所有没用的镜像(包括没在用的)

docker image prune -a

清理所有没用的东西

docker system prune

包括:

  • 停止的容器
  • 没用的网络
  • 悬空镜像
  • 构建缓存

清理所有没用的东西(包括镜像)

docker system prune -a

连没在用的镜像也删了。

清理数据卷

docker volume prune

注意: 这个会删没用的数据卷,里面的数据也没了!

四、手动删除单个容器

如果只想删某一个:

docker rm 容器ID或名字

强制删除运行中的容器:

docker rm -f 容器ID或名字

五、批量删除停止的容器

方法1:用docker rm

docker rm $(docker ps -a -q -f status=exited)

解释:

  • docker ps -a -q 列出所有容器ID
  • -f status=exited 只筛停止的
  • docker rm 删掉

方法2:用docker container prune

docker container prune -f

推荐用这个,简单。

六、查看磁盘占用

清理之前看看占了多少:

docker system df

输出:

TYPE            TOTAL   ACTIVE  SIZE    RECLAIMABLE
Images          20      5       10GB    7GB (70%)
Containers      15      5       500MB   400MB (80%)
Local Volumes   8       3       2GB     1GB (50%)
Build Cache     -       -       1GB     800MB

看RECLAIMABLE列,就是可以回收的。

七、常见场景

场景1:测试完一堆容器,想全清了

docker container prune -f

场景2:磁盘满了,全面清理

docker system prune -a -f --volumes
  • -a 删所有没用的镜像
  • -f 不问
  • --volumes 连数据卷也删

注意: 这个很猛,数据卷也删了,重要数据先备份!

场景3:只清理镜像,不动容器

docker image prune -a -f

八、常见坑

坑1:删了数据卷,数据没了

docker system prune --volumes

加了 --volumes 会删没用的数据卷。

注意: 数据库的数据卷别删!

坑2:删了镜像,重新拉要很久

docker image prune -a

把所有没在用的镜像都删了,下次用还要重新拉。

建议: 常用镜像留着,别全删。

坑3:误删了运行中的容器?

docker container prune 只删停止的,运行中的删不了。

放心,安全。

坑4:删了容器,数据卷还在

docker rm 容器名

只删容器,数据卷还在。

想连数据卷一起删:

docker rm -v 容器名

九、定期清理脚本

写个脚本,定期清理:

#!/bin/bash
# 清理停止的容器
docker container prune -f
# 清理悬空镜像
docker image prune -f
# 清理没用的网络
docker network prune -f

加到crontab,每周跑一次:

0 3 * * 0 /home/clean-docker.sh

总结

记住:

  1. docker container prune 删所有停止的容器
  2. docker image prune -a 删所有没用的镜像
  3. docker system prune 全面清理
  4. 删数据卷要小心,别把数据库删了

最常用:

docker container prune -f

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-8 08:21