Docker释放空间几种常用的清理方法
作者:Riu_Peter
随着Docker的广泛使用,管理Docker占用的磁盘空间变得越来越重要,长时间运行Docker环境,未使用的容器、镜像、卷和网络等会逐渐积累,这篇文章主要介绍了Docker释放空间几种常用的清理方法,需要的朋友可以参考下
前言
Docker 在使用过程中会产生大量临时文件、停止的容器、悬空镜像和构建缓存,及时清理可以释放宝贵的磁盘空间。以下是几种常用的清理方法,按从安全通用到彻底激进的顺序排列。
1. 一键清理(最常用)
使用 docker system prune 命令,它会清理所有未使用的资源(停止的容器、悬空镜像、未使用的网络、构建缓存)。
# 标准清理(只删除悬空镜像,不删除未使用的卷) docker system prune # 彻底清理(添加 -a 删除所有未使用的镜像,添加 --volumes 删除未使用的卷) docker system prune -a --volumes
注意:添加 --volumes 会删除未被任何容器使用的卷,操作前请确认数据是否需要保留。
2. 分类清理(针对性操作)
如果只想清理特定类型的资源,可以使用以下命令。
清理容器
# 删除所有已停止的容器 docker container prune # 删除所有已停止的容器(并强制) docker container prune -f # 删除所有容器(包括运行中的,需加 -f 强制) docker rm -f $(docker ps -aq)
清理镜像
# 删除悬空镜像(无标签、无容器的中间层) docker image prune # 删除所有未使用的镜像(包括未被容器使用的) docker image prune -a # 删除所有镜像(谨慎使用) docker rmi -f $(docker images -q)
清理卷
卷是用于持久化数据的,清理需格外谨慎。
# 删除所有未使用的卷 docker volume prune # 查看卷占用空间 docker system df -v
清理构建缓存
# 删除所有构建缓存 docker builder prune # 彻底清理构建缓存 docker builder prune -a
3. 查看磁盘占用情况
在清理前后,可以用以下命令查看 Docker 的资源占用情况:
# 显示总览(容器、镜像、卷、构建缓存各自占用) docker system df # 显示更详细的列表 docker system df -v
4. 自动化清理(推荐定期执行)
可以设置 cron 任务(Linux)或 计划任务(Windows/macOS)定期自动清理。
例如在 Linux 中,编辑 crontab:
crontab -e
添加一行,每周日凌晨 3 点执行清理:
0 3 * * 0 docker system prune -f
5. 特殊情况:清理所有停止容器和镜像(慎用)
如果你确信不需要任何已停止的容器和未使用的镜像,可以执行以下组合命令:
# 停止所有运行中的容器(可选) docker stop $(docker ps -q) # 删除所有容器 docker rm -f $(docker ps -aq) # 删除所有镜像 docker rmi -f $(docker images -q) # 删除所有卷(慎用) docker volume rm $(docker volume ls -q) # 删除所有网络(除默认外) docker network prune
总结建议
| 场景 | 推荐命令 |
|---|---|
| 日常清理 | docker system prune |
| 释放较多空间 | docker system prune -a |
| 连卷也清理(数据不保留) | docker system prune -a --volumes |
| 查看占用 | docker system df -v |
| 定期自动清理 | crontab + docker system prune -f |
提醒:清理卷 (--volumes) 会删除容器未使用的数据卷,如果容器中保存了数据库或重要文件,务必确认这些卷是否还在使用中,以免数据丢失。
到此这篇关于Docker释放空间几种常用的清理方法的文章就介绍到这了,更多相关Docker释放空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
