最安全高效的方式是用 docker system prune 及其配套命令,而非手动拼接 docker rm 或 docker rmi;日常推荐交互式一键清理,首次使用勿加 -f,确认后再执行;按需可单独清理容器、镜像、网络或卷;彻底清理慎用于生产环境。

清理 Docker 未使用的资源,核心是分类型、有选择地删除,避免误删运行中服务或重要数据。最安全高效的方式是用 docker system prune 及其配套命令,而不是手动拼接 docker rm 或 docker rmi。
日常推荐:交互式一键清理(最安全)
执行以下命令,Docker 会自动识别并列出所有可清理项,等你确认后再操作:
-
docker system prune—— 删除已停止容器、悬空镜像(<none>:<none></none></none>)、未使用的网络、构建缓存 - 不会删正在运行的容器、带标签的镜像、数据卷、默认网络(
bridge/host) - 首次使用强烈建议不加
-f,看清列表再按y确认
按需精准清理:单独处理某类资源
如果只想清某一部分,或想先查看再决定,可用这些专用命令:
-
已停止容器:
docker container prune(或加-f跳过确认) -
悬空镜像(无标签且无容器引用):
docker image prune -
所有未使用镜像(含带标签但无引用的):
docker image prune -a -
未使用网络:
docker network prune -
未使用卷:
docker volume prune(⚠️ 卷里可能存业务数据,务必确认无挂载再执行)
彻底清理(生产环境慎用)
当需要重置开发/测试环境,或磁盘已严重告警时,可组合使用:
-
docker system prune -a—— 加-a后,连所有未被引用的带标签镜像也一并清理 -
docker system prune -a --volumes—— 再加--volumes,连未挂载的卷也删(高风险,仅限明确无数据需求时) - 执行前建议先运行
docker system df -v查看各组件实际占用,定位大头
预防下次再满:几个实用习惯
清理只是补救,养成习惯才能治本:
- 临时容器加
--rm参数,退出即删:docker run --rm nginx:alpine ping -c 1 example.com - 构建镜像时加
--no-cache避免冗余中间层(CI 场景尤其有用) - 定期检查:
docker system df看整体用量,docker system df -v看各目录明细 - 对长期不用的自定义网络、命名卷,主动用
docker network rm/docker volume rm清理











