首页/云/云与容器速查/docker stats 资源监控
容器与 Docker106 条

docker stats 资源监控

实时查看容器 CPU、内存、网络、磁盘 IO:--no-stream 取一次快照;配合 --format 适合脚本巡检与告警基线。

云与容器速查云更新于 2026-10-13

docker stats 是什么

docker stats 实时查看容器的资源使用:CPU 百分比、内存使用与上限、网络 IO、块设备 IO 以及进程数。默认进入全屏刷新模式,按 q 退出;加 --no-stream 只输出一次快照,适合写进巡检脚本。它是容器维度的视图,和宿主维度的 top、iostat 配合才能完整判断压力来源。

基本信息

监控指标CPU%、内存使用与上限、网络 IO、块设备 IO、PIDs
交互方式默认全屏刷新,q 退出;--no-stream 单次输出
格式化输出--format 支持模板变量,便于脚本解析与落库
与 top 区别stats 是容器维度资源,top 是进程维度列表
局限宿主整体压力如 IO 等待需配合 iostat 与 top 判断

典型使用场景

  • 排查卡顿:确认是某个容器吃满 CPU 还是整体 IO 等待
  • 验证限额:给容器配了内存上限后,确认实际使用是否触顶
  • 发布观察:新版本上线后对比资源曲线,判断有无内存泄漏迹象
  • 容量规划:按实际使用量调整 CPU 与内存限额,减少资源浪费
  • 巡检脚本:用 --no-stream 加 --format 采集快照并上报监控系统

使用示例

使用示例
docker stats                       # 全屏实时刷新,q 退出
docker stats --no-stream           # 只输出一次快照
# 表格化输出关键列,适合写进巡检脚本或定时任务
docker stats --no-stream --format \
  "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}"
docker stats --no-stream $(docker ps -q)   # 限定容器范围

输出逐列读法

列含义异常表现
CONTAINER容器名或 ID—
CPU %占单核的百分比,多核可超 100长期贴近核数上限说明 CPU 打满
MEM USAGE/LIMIT内存使用量与上限上限显示为宿主总量说明没设限额
MEM %内存使用比例持续接近上限随时可能被 OOM
NET I/O累计收发的网络流量突增说明有大批量传输或异常外联
BLOCK I/O累计读写磁盘量持续增长说明落盘频繁,可能拖慢宿主
容器未设内存上限时,MEM LIMIT 显示宿主总量,MEM% 会失真。生产环境务必用 -m 设置限额,否则单个容器可以拖垮整台机器。
MEM USAGE 包含文件缓存,评估 OOM 风险时更要看长期趋势与容器实际工作集;内存持续上涨且不回落,通常是应用侧泄漏而非缓存。

易错点

  • 只看容器内部指标不看宿主,宿主的 IO 瓶颈被完全漏掉
  • 容器没设内存上限,MEM% 失真让人误以为还很空闲
  • 以 NET I/O 累计值直接判断带宽,忘了它是累计而非瞬时
  • 把 CPU 100% 理解为占满整机,实际是占满一个核,多核机器仍有余量

数据来源与参考

  • Docker Docs:docker stats

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌