Docker 磁盘满了?这样清理高效又安全

大家好,我是地鼠哥,最近在带着大家做项目的时候碰到了一个印象很深的问题,和大家总结分享一下:明明代码逻辑没问题,部署时却频频报错,排查半天发现是服务器磁盘被占满了?
今天把解决思路整理出来,不仅能帮你快速释放磁盘空间,也想顺便安利下我们的项目课程(https://mp.weixin.qq.com/s/ACzEHtvGh2YsU_4fxo83fQ),里面还包含了更多部署运维的实战技巧哦~
📌 问题根源:Docker 为什么会占满磁盘?
Docker 运行时会产生大量“临时资源”,比如:
测试后停止运行的容器
构建失败或过时的镜像
未被使用的自定义网络
构建镜像时产生的缓存文件
这些资源默认不会自动删除,积累久了就会导致磁盘告警。好在 Docker 提供了专门的清理命令,一招就能解决大部分问题。
🛠️ 核心解决方案:docker system prune 命令
📌 一、命令简介
docker system prune 是 Docker 提供的系统级资源清理命令,用于自动删除以下未被使用的资源 :
已停止的容器(Stopped containers)
悬空镜像(Dangling images)
未被任何容器使用的自定义网络(Unused networks)
构建缓存(Build cache)
⚠️ 默认不会删除 :
正在运行的容器
有标签且未被引用的镜像(如
nginx:latest)数据卷(Volumes)
默认网络(
bridge、host、none)
🛠️ 二、基本语法
常用选项
🔍 三、详细行为说明
默认行为(不加 -a)
执行 docker system prune 会删除:
🧪 四、使用示例
示例 1:交互式清理(推荐首次使用)
示例 2:静默清理(推荐使用)
示例 3:彻底清理(包括未使用的有标签镜像)
示例 4:清理 + 删除未使用卷(高危!)
🔒 五、安全性与风险控制
✅ 安全保障
不影响正在运行的容器和服务
不删除默认网络和关键系统资源
卷(Volumes)默认保留,防止数据丢失
⚠️ 风险提示
✅ 安全建议
先预览再执行:不加
-f运行,确认删除列表生产环境避免
-a和--volumes重要镜像提前备份:
定期监控磁盘使用:
📊 六、查看清理效果
清理前后对比磁盘占用:
输出示例:
📝 总结:让磁盘清理成为习惯
磁盘管理是运维的基础工作。定期执行 docker system prune -f 能有效避免磁盘满的问题,配合 docker system df 监控,可让部署更顺畅。
如果你在项目开发中还遇到过其他部署难题,欢迎关注并私信我交流问题,另外我们的微服务电商项目课程(https://mp.weixin.qq.com/s/ACzEHtvGh2YsU_4fxo83fQ) 不仅包含完整的项目架构设计,还有更多像这样的实战运维技巧,帮你少踩坑、高效开发!
版权声明: 本文为 InfoQ 作者【王中阳Go】的原创文章。
原文链接:【http://xie.infoq.cn/article/ac9b3eb8e4317613fea28263e】。文章转载请联系作者。







评论