写点什么

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

作者:王中阳Go
  • 2025-10-23
    北京
  • 本文字数:1349 字

    阅读完需:约 4 分钟

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)

  • 默认网络(bridgehostnone

🛠️ 二、基本语法

docker system prune [OPTIONS]
复制代码

常用选项

🔍 三、详细行为说明

默认行为(不加 -a

执行 docker system prune 会删除:


🧪 四、使用示例

示例 1:交互式清理(推荐首次使用)

$ docker system pruneWARNING! This will remove:  - all stopped containers  - all networks not used by at least one container  - all dangling images  - all build cacheAre you sure you want to continue? [y/N] y
复制代码

示例 2:静默清理(推荐使用)

docker system prune -f
复制代码

示例 3:彻底清理(包括未使用的有标签镜像)

docker system prune -a -f
复制代码

示例 4:清理 + 删除未使用卷(高危!)

docker system prune --volumes -f
复制代码

🔒 五、安全性与风险控制

✅ 安全保障

  • 不影响正在运行的容器和服务

  • 不删除默认网络和关键系统资源

  • 卷(Volumes)默认保留,防止数据丢失

⚠️ 风险提示

✅ 安全建议

  1. 先预览再执行:不加 -f 运行,确认删除列表

  2. 生产环境避免 -a--volumes

  3. 重要镜像提前备份


docker save myapp:v1 -o myapp_v1.tar
复制代码


  1. 定期监控磁盘使用


docker system df
复制代码

📊 六、查看清理效果

清理前后对比磁盘占用:


# 清理前docker system df
# 执行清理docker system prune -f
# 清理后docker system df
复制代码


输出示例:


TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLEImages          10        3         2.1GB     1.4GB (66%)Containers      5         3         120MB     80MB (66%)Local Volumes   4         2         500MB     300MB (60%)Build Cache     -         -         800MB     800MB
复制代码

📝 总结:让磁盘清理成为习惯

磁盘管理是运维的基础工作。定期执行 docker system prune -f 能有效避免磁盘满的问题,配合 docker system df 监控,可让部署更顺畅。


如果你在项目开发中还遇到过其他部署难题,欢迎关注并私信我交流问题,另外我们的微服务电商项目课程(https://mp.weixin.qq.com/s/ACzEHtvGh2YsU_4fxo83fQ) 不仅包含完整的项目架构设计,还有更多像这样的实战运维技巧,帮你少踩坑、高效开发!

发布于: 刚刚阅读数: 4
用户头像

王中阳Go

关注

靠敲代码在北京买房的程序员 2022-10-09 加入

【微信】wangzhongyang1993【公众号】程序员升职加薪之旅【成就】InfoQ专家博主👍掘金签约作者👍B站&掘金&CSDN&思否等全平台账号:王中阳Go

评论

发布
暂无评论
Docker磁盘满了?这样清理高效又安全_Docker_王中阳Go_InfoQ写作社区