使用 Shell 脚本快速清理 Docker 容器、镜像、卷和网络的命令集合,适用于 Linux/macOS 环境:
1. 删除所有 Docker 容器
# 强制删除所有运行中的和已停止的容器
docker rm -f $(docker ps -aq)
docker ps -aq
:列出所有容器的 ID(包括停止的)。docker rm -f
:强制删除容器。
2. 删除所有 Docker 镜像
# 强制删除所有镜像(包括未被使用的中间层镜像)
docker rmi -f $(docker images -aq)
docker images -aq
:列出所有镜像的 ID。docker rmi -f
:强制删除镜像。
3. 清理未使用的 Docker 资源
# 删除未使用的容器、网络、镜像(悬空镜像)和构建缓存
docker system prune -a -f
prune
:清理未使用的资源。-a
:包括未使用的镜像(不仅仅是悬空镜像)。-f
:无需确认,直接执行。
4. 删除所有 Docker 卷
# 删除所有未使用的卷(谨慎操作,可能导致数据丢失)
docker volume prune -f
volume prune
:清理未使用的卷(如数据库数据卷)。
5. 删除所有 Docker 网络
# 删除所有自定义网络(默认网络不会被删除)
docker network prune -f
6. 一键清理所有 Docker 资源
# 组合命令:删除容器、镜像、卷、网络等
docker rm -f $(docker ps -aq) 2>/dev/null || true
docker rmi -f $(docker images -aq) 2>/dev/null || true
docker volume prune -f
docker network prune -f
docker system prune -a -f
2>/dev/null
:忽略错误(如无容器/镜像时的报错)。|| true
:确保脚本继续执行(即使前一条命令失败)。
注意事项
- 数据风险:删除卷(
volume prune
)会永久移除数据(如数据库文件),谨慎操作! - 生产环境:避免直接使用
-f
强制删除,建议先手动确认资源。 - 仅清理未使用的资源:如果只想清理悬空镜像(未被任何容器引用的镜像),使用:
docker image prune -f
扩展:按条件删除
- 删除特定标签的镜像:
docker rmi $(docker images | grep "pattern" | awk '{print $3}')
- 删除已退出的容器:
docker rm $(docker ps -q -f status=exited)
执行后,可通过 docker ps
、docker images
、docker volume ls
等命令验证清理结果。