需要彻底清空Docker服务的所有相关资源(容器、镜像、网络、数据卷等),以下是分步操作指南,涵盖安全清理和强制清理两种场景:
文章目录
- 一、前置准备:停止所有运行中的容器
- 二、删除所有容器
- 三、删除所有镜像
- 四、删除所有自定义网络
- 五、删除所有数据卷(谨慎操作!)
- 六、一键完整清空(快捷命令)
- 七、补充:Docker系统级清理(推荐日常维护)
- 验证是否清空成功
- 总结
一、前置准备:停止所有运行中的容器
首先需要停止所有处于运行状态的Docker容器,否则无法删除运行中的容器,执行命令:
bash
# 停止所有运行中的容器(通过docker ps -q获取所有运行中容器ID)
docker stop $(docker ps -q)
如果需要停止所有容器(包括已停止的容器无需操作,此命令仅针对运行中容器,无运行容器时执行无副作用)。
二、删除所有容器
删除Docker中所有的容器(无论是否处于运行状态),释放容器占用的资源:
bash
# 删除所有容器(-f 强制删除,即使容器未停止;docker ps -a -q 获取所有容器ID)
docker rm -f $(docker ps -a -q)
三、删除所有镜像
删除本地存储的所有Docker镜像,释放镜像占用的磁盘空间(镜像文件通常占用较大空间):
bash
# 删除所有Docker镜像(-f 强制删除,docker images -q 获取所有镜像ID)
docker rmi -f $(docker images -q)
注意:如果镜像被容器(即使是已停止的容器)引用,直接删除会失败,步骤二已删除所有容器,此步骤可正常执行。
四、删除所有自定义网络
Docker默认会创建一些内置网络(bridge、host、none),此命令仅删除你自定义创建的网络,不影响内置网络:
bash
# 删除所有自定义Docker网络
docker network rm $(docker network ls -q)
补充:如果提示"网络正在被使用",说明还有未删除的容器引用该网络,重新执行步骤二即可解决。
五、删除所有数据卷(谨慎操作!)
数据卷是Docker持久化数据的核心,此操作会永久删除所有数据卷中的数据(如数据库数据、配置文件等),无法恢复,请确保已备份重要数据后再执行:
bash
# 1. 先查看所有数据卷(确认需要删除的卷)
docker volume ls
# 2. 删除所有未被使用的数据卷(安全选项,不会删除被容器引用的卷)
docker volume prune -f
# 3. 强制删除所有数据卷(无论是否被引用,风险极高!)
docker volume rm $(docker volume ls -q)
六、一键完整清空(快捷命令)
如果需要快速执行所有清空操作(已包含上述所有步骤,谨慎使用,数据卷为强制删除):
bash
# 停止所有容器 → 删除所有容器 → 删除所有镜像 → 删除所有自定义网络 → 删除所有数据卷
docker stop $(docker ps -q) && docker rm -f $(docker ps -a -q) && docker rmi -f $(docker images -q) && docker network rm $(docker network ls -q) && docker volume rm $(docker volume ls -q)
七、补充:Docker系统级清理(推荐日常维护)
如果不需要彻底清空,仅需清理无用资源(未被使用的容器、镜像、网络、数据卷),推荐使用Docker内置的清理命令,安全无风险:
bash
# 清理所有未被使用的Docker资源,执行前会有确认提示,添加 -f 可跳过确认
docker system prune -a -f
# 说明:-a 表示清理所有无用镜像(包括未被标签的镜像),默认仅清理悬空镜像;-f 强制执行,无需手动确认
验证是否清空成功
执行以下命令,若均无输出,则说明Docker相关资源已全部清空:
bash
docker ps -a # 查看所有容器,无输出即无容器
docker images # 查看所有镜像,无输出即无镜像
docker network ls # 仅保留bridge、host、none三个内置网络即为正常
docker volume ls # 无输出即无数据卷
总结
- 核心步骤:停止容器 → 删除容器 → 删除镜像 → 删除网络 → 删除数据卷(按顺序执行更稳妥);
- 谨慎操作:数据卷删除会永久丢失数据,务必先备份;
- 日常维护:优先使用
docker system prune -a清理无用资源,无需彻底清空; - 一键命令:适合测试环境快速重置Docker环境,生产环境禁止随意使用。