docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker删除容器与镜像

Docker 批量删除容器与镜像高效清理资源的完整指南

作者:刘一说

这篇文章主要介绍了Docker 批量删除容器与镜像高效清理资源的完整指南,本文将系统性地介绍如何安全、高效地批量删除容器和镜像,并提供实用命令与自动化建议,需要的朋友可以参考下

作者:运维工程师小记
适用系统:Linux / macOS / Windows (Docker Desktop)
Docker 版本:18.09+
核心目标:安全、高效地批量清理 Docker 容器与镜像,释放磁盘空间,提升系统性能

一、为什么需要批量删除 Docker 资源?

在日常使用 Docker 的过程中,我们经常会:

这些“残留”资源会逐渐占用大量磁盘空间,甚至导致服务器磁盘爆满。因此,定期批量清理 Docker 容器与镜像是运维中的必要操作。

本文将系统性地介绍如何安全、高效地批量删除容器和镜像,并提供实用命令与自动化建议。

二、Docker 资源清理核心命令概览

操作命令
删除已停止容器docker container prune
删除所有容器(含运行中)docker rm -f $(docker ps -aq)
删除悬空镜像docker image prune
删除未使用镜像docker image prune -a
删除所有镜像docker rmi $(docker images -q)
一键清理所有资源docker system prune -a --volumes

三、批量删除容器(Container)

✅ 1. 删除所有已停止的容器(推荐日常使用)

docker container prune

不提示直接删除

docker container prune -f

✅ 2. 删除所有已退出(exited)的容器

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

💡 -q:只输出容器 ID
-f status=exited:过滤状态为 exited 的容器

✅ 3. 删除所有创建但未启动的容器(created 状态)

docker rm $(docker ps -aq -f status=created)

✅ 4. 按名称或标签批量删除

删除名称包含nginx的所有容器:

docker rm -f $(docker ps -aq --filter "name=nginx*")

删除标签为env=dev的容器:

docker rm -f $(docker ps -aq --filter "label=env=dev")

删除由特定镜像启动的容器:

docker rm -f $(docker ps -aq --filter "ancestor=redis:alpine")

✅ 5. 强制删除所有容器(慎用!)

docker rm -f $(docker ps -aq)

⚠️ 警告:此命令会强制停止并删除所有容器,包括正在运行的服务!
仅建议在测试环境或系统重置时使用。

四、批量删除镜像(Image)

✅ 1. 删除所有悬空镜像(dangling)

悬空镜像是指没有标签且未被任何容器引用的镜像层。

docker image prune

不提示直接删除

docker image prune -f

✅ 2. 删除所有未被使用的镜像

docker image prune -a

静默执行

docker image prune -a -f

✅ 3. 按名称或标签删除镜像

删除名称包含temp的所有镜像:

docker rmi $(docker images 'temp*' -q)

删除仓库名为myapp的所有镜像:

docker rmi $(docker images 'myapp' -q)

删除标签为latest的镜像:

docker rmi $(docker images --filter "reference=*:latest" -q)

✅ 4. 删除所有镜像(极端情况使用)

docker rmi -f $(docker images -q)

⚠️ 极度危险:所有镜像将被强制删除,无法恢复!
建议先备份关键镜像:docker save -o backup.tar nginx:latest

五、推荐清理流程(安全高效)

# 1. 查看当前资源占用情况
docker system df
# 2. 清理已停止的容器
docker container prune -f
# 3. 清理悬空镜像
docker image prune -f
# 4. (可选)清理未使用的镜像
docker image prune -a -f
# 5. 再次查看清理效果
docker system df

六、一键清理:docker system prune

Docker 提供了一键清理命令,可同时清理容器、网络、镜像和构建缓存。

清理未使用的资源:

docker system prune

清理所有未使用的资源(含未引用镜像):

docker system prune -a

同时清理匿名卷(volumes):

docker system prune -a --volumes

静默执行(适合脚本):

docker system prune -a --volumes -f

建议:将此命令加入定时任务,每周执行一次。

七、自动化脚本建议

您可以创建一个 Shell 脚本,定期执行清理任务:

#!/bin/bash
# docker-clean.sh
echo "开始清理 Docker 资源..."
# 删除已停止容器
docker container prune -f
# 删除悬空镜像
docker image prune -f
# 删除超过24小时的未使用镜像
docker image prune -a -f --filter "until=24h"
echo "清理完成!"

赋予执行权限并加入 crontab

chmod +x docker-clean.sh
crontab -e

添加定时任务(每周日凌晨2点执行):

0 2 * * 0 /path/to/docker-clean.sh

八、注意事项与最佳实践

项目建议
删除前确认资源是否重要使用 docker inspect 查看详情
避免在生产环境随意删除建议先在测试环境验证
docker rm vs docker rmirm 删除容器,rmi 删除镜像
运行中的容器需加 -f 才能删除否则会报错
重要镜像建议备份使用 docker save 导出
使用 prune 命令更安全比直接 rmi 或 rm 更可控

九、总结

场景推荐命令
日常清理容器docker container prune -f
清理构建残留docker image prune -f
批量删除某类资源docker rm/rmi $(docker ps/images ...)
彻底重置环境docker system prune -a --volumes -f

📎 附录:常用命令速查表

功能命令
查看所有容器docker ps -a
查看所有镜像docker images
查看资源占用docker system df
删除单个容器docker rm <id>
强制删除容器docker rm -f <id>
删除单个镜像docker rmi <id>
强制删除镜像docker rmi -f <id>
过滤查询docker ps --filter "name=xxx"

📢 本文适用于所有使用 Docker 的开发者与运维人员
建议收藏、转发,作为日常运维参考手册。

到此这篇关于Docker 批量删除容器与镜像高效清理资源的完整指南的文章就介绍到这了,更多相关docker删除容器与镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文