当前位置: 首页 > news >正文

Docker占用空间监控

Docker 占用空间监控

1. 概述

Docker 在长期使用过程中会积累大量的镜像、容器、数据卷和构建缓存,占用大量磁盘空间。定期监控和清理 Docker 磁盘占用是系统维护的重要工作。

主要占用来源

  • 镜像(Images):下载的 Docker 镜像文件
  • 容器(Containers):运行或已停止的容器及其读写层
  • 数据卷(Volumes):持久化存储的数据
  • 构建缓存(Build Cache):构建镜像时产生的缓存文件

2. 查看磁盘使用情况

2.1 查看整体磁盘使用

docker system df

输出示例:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          10        5         2.5GB     1.2GB (48%)
Containers      15        3         150MB     100MB (66%)
Local Volumes   5         2         500MB     200MB (40%)
Build Cache     20        0         300MB     300MB

2.2 查看详细信息

docker system df -v

此命令会显示镜像、容器和数据卷的详细占用信息。

2.3 查看容器大小

# 查看所有容器及其大小
docker container ls -s# 查看特定容器大小
docker container ls -s <container_id>

3. 空间清理命令

3.1 清理停止的容器

docker container prune

作用: 删除所有处于 stopped 状态的容器。

3.2 清理悬空镜像

docker image prune

作用: 删除 dangling 镜像(没有被任何容器引用的镜像)。

3.3 清理所有未使用的镜像

docker image prune -a

作用: 删除所有未被容器使用的镜像(包括悬空镜像)。

3.4 清理数据卷

docker volume prune

作用: 删除所有未被使用的本地数据卷。

3.5 清理构建缓存

docker builder prune

作用: 删除构建缓存。

3.6 一键清理所有无用数据

docker system prune

作用: 同时清理:

  • 停止的容器
  • 悬空镜像
  • 未使用的网络
  • 构建缓存

带数据卷清理:

docker system prune --volumes

注意: 此命令会删除数据卷,请谨慎使用!


4. 自动化监控方案

4.1 脚本监控

创建 Shell 脚本定期检查磁盘使用情况:

#!/bin/bash
# docker_monitor.shTHRESHOLD=80  # 阈值 80%USAGE=$(docker system df | grep Images | awk '{print $5}' | sed 's/%//')if [ "$USAGE" -gt "$THRESHOLD" ]; thenecho "警告:Docker 磁盘使用率超过 ${THRESHOLD}%"# 可添加邮件通知或其他告警方式
fi

4.2 定时任务

设置 cron 定时任务每天检查:

# 编辑 crontab
crontab -e# 添加每日早上 8 点检查
0 8 * * * /path/to/docker_monitor.sh

5. 日志管理

5.1 查看容器日志大小

# 查找日志文件最大的前 10 个容器
for i in $(docker ps -q); dosize=$(du -sh $(docker inspect --format='{{.LogPath}}' $i 2>/dev/null) 2>/dev/null | cut -f1)name=$(docker inspect --format='{{.Name}}' $i 2>/dev/null | sed 's/\///')echo "$size $name"
done | sort -hr | head -10

5.2 配置日志轮转

编辑 Docker 守护进程配置文件 /etc/docker/daemon.json

{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"}
}

参数说明:

  • max-size: 单个日志文件最大 10MB
  • max-file: 最多保留 3 个日志文件

重启 Docker 使配置生效:

systemctl daemon-reload
systemctl restart docker

6. 最佳实践

6.1 镜像优化

  • 使用多阶段构建减小镜像体积
  • 定期清理不常用的镜像
  • 选择合适的基础镜像(如 alpine)

6.2 容器管理

  • 及时清理不再使用的容器
  • 使用临时容器进行测试
  • 避免在容器层写入大量数据

6.3 数据存储

  • 使用挂载卷存储持久化数据
  • 定期备份重要数据卷
  • 清理无用的数据卷

6.4 构建优化

  • 及时清理构建缓存
  • 合理使用 .dockerignore 文件
  • 优化 Dockerfile 减少层数

7. 注意事项

警告: 执行清理操作前请务必:

  1. 确认要清理的资源是否重要
  2. 备份需要的数据和镜像
  3. 确保不会影响正在运行的服务

建议: 在生产环境执行清理操作前,先在测试环境验证。


8. 常用命令速查表

命令 说明 危险程度
docker system df 查看磁盘使用 安全
docker container prune 清理停止的容器
docker image prune 清理悬空镜像
docker image prune -a 清理所有未使用镜像
docker volume prune 清理未使用的卷
docker system prune 一键清理
docker system prune --volumes 一键清理(含卷) 非常高

9. 参考资料

  • Docker 官方文档 - 清理 Docker
  • Docker system df 命令详解
http://www.jsqmd.com/news/985299/

相关文章:

  • Modbus地址400001和HR0说的是一个东西吗?一次讲清PLC、上位机里的地址换算
  • Vue项目里用高德地图Loca插件做个炫酷的物流流向图(附完整代码)
  • VMware版本混乱?一图看懂Workstation各版本与虚拟机硬件版本的对应关系及降级指南
  • 从电路设计到权限管理:布尔代数与‘格’理论在实际开发中的隐藏应用
  • 遗传算法工程化实战:参数设计、算子优化与早熟防控
  • 告别调参玄学:用Halcon的‘仿射变换+局部阈值’稳定检测药片缺失与破损
  • 保姆级教程:在Ubuntu 22.04上从零搭建Open vSwitch虚拟交换机(附常用命令速查表)
  • 别让GPS时间‘归零’坑了你:手把手教你用模拟器测试2038年周反转问题
  • LaTeX排版避坑:用pdfcrop和Acrobat DC彻底清除图片虚线边框(附Visio保存设置)
  • 不止于北京:用ArcGIS分析任意区域水网密度的通用工作流与模板分享
  • TongWeb+TongLINK/Q的集成方式
  • ROS 2 Humble对比ROS 1:launch文件写法大变样?迁移避坑指南来了
  • WinCC 7.5通讯实战:MPI、Profibus、TCP/IP三种连接方式到底怎么选?看完这篇就懂了
  • 树莓派物联网神器:IOTstack快速搭建指南,10分钟打造智能家居系统
  • 别再只看GPS信号格了!手把手教你读懂手机里的DOP值,提升户外定位精度
  • 7-3 地下迷宫探索 (30 分)
  • SCD缓慢变化维度详解:Type 1/2/3选型与Type 2工业级落地七步法
  • Sokit完整指南:如何快速掌握TCP/UDP网络调试终极工具
  • 保姆级教程:在嵌入式Linux平台上用逻辑分析仪抓取并解析SPMI总线时序
  • 天津黄金变现哪家靠谱?五大回收门店测评首选禹竞名奢汇 - 名奢变现站
  • Docker卸载步骤
  • 别再只盯着温度了!从热平衡公式出发,重新理解IGBT的“热失控”与选型避坑
  • 告别灰蒙蒙!用HDRTVNet一键将普通SDR视频升级为HDR大片(附保姆级配置教程)
  • CamillaDSP:专业音频处理引擎的实用指南
  • ETCD未授权访问风险基于角色认证和启用https的ca证书修复方案
  • 备忘录:Camulator与Simpleperf(硬件实测)的对比实验
  • 计算机组成原理学习笔记:手把手拆解CPU执行一条指令的全过程(以ADD指令为例)
  • 2026年 南京汽车维修/汽车保养/汽车空调维修/奔驰、宝马、奥迪专修推荐榜:专业深修与暖心服务口碑之选 - 品牌发掘
  • 保姆级教程:用北醒TFmini-i-CAN雷达给PixHawk飞控解锁避障和定高(附完整参数表)
  • BES2500Z平台实战:从零搭建TWS耳机项目,手把手教你配置GPIO按键与LED指示灯