docker container stats 是 Docker 原生最常用、最轻量的实时监控命令,默认动态刷新显示运行中容器的 CPU%、MEM USAGE/LIMIT、MEM%、NET I/O、BLOCK I/O 和 PIDS 等核心指标,支持 --no-stream 快照输出、--format 自定义字段、-a 显示已停止容器等选项,并可结合 cgroup 底层数据与 dry 可视化工具深入排错。

直接用 docker container stats 就能实时看到容器的 CPU、内存、网络和磁盘 I/O 状态,它是 Docker 原生命令中最常用、最轻量的运行时监控入口。
核心命令:docker container stats
执行后默认以动态刷新方式展示所有运行中容器的关键指标:
- CPU %:容器实际占用的 CPU 时间占比(基于 cgroup 统计)
- MEM USAGE / LIMIT:当前内存使用量与设定上限(如 2.1GiB / 4.0GiB),注意该值含页缓存(Page Cache),不等于进程 RSS
- MEM %:按 LIMIT 计算的百分比,是判断内存压力的直观依据
- NET I/O:累计接收/发送的网络数据量(如 12.4MB / 8.7MB)
- BLOCK I/O:读写磁盘的数据总量(单位通常为 KiB 或 MiB)
- PIDS:容器内当前活跃进程数,突增可能暗示 fork 爆炸或泄漏
支持常用选项提升实用性:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
-
--no-stream:只输出一次快照,适合脚本采集 -
--format:用 Go 模板定制字段,例如:docker stats --no-stream --format "{{.Name}}\t{{.CPUPerc}}\t{{.MemPerc}}" -
-a:显示已停止容器(状态为 exited)的历史资源峰值 -
--no-trunc:避免容器 ID 和名称被截断,便于识别
深入验证:绕过 stats 查看 cgroup 底层数据
当 docker stats 显示内存持续上涨但应用无明显负载时,需确认是否由内核缓存导致。可直接读取 cgroup 接口获取更精确的内存构成:
- 查当前内存用量(含 cache/buffer):
cat /sys/fs/cgroup/memory/docker/<container-id>/memory.usage_in_bytes - 查硬性限制值:
cat /sys/fs/cgroup/memory/docker/<container-id>/memory.limit_in_bytes - 查是否发生 OOMKilled:
docker events --filter 'event=oom' --since 1h - 查 CPU 节流次数(反映配额不足):
cat /sys/fs/cgroup/cpu/docker/<container-id>/cpu.stat | grep nr_throttled
终端可视化监控:dry 工具一键启动
相比原始命令行,dry 提供带颜色编码和进度条的交互式界面,适合运维人员快速巡检:
- 安装后执行
dry -m即进入监控模式 - CPU 使用率用颜色区分:绿色(≤50%)、蓝色(50–75%)、黄色(75–90%)、红色(≥90%)
- 内存显示为 2.4GiB / 4.0GiB + 进度条,直观提示水位
- 网络流量分 RX(↓ 蓝色)和 TX(↑ 绿色),实时累计值一目了然
辅助排错:结合 inspect 与 logs 定位异常根源
stats 只告诉你“哪里高”,要确认“为什么高”,需联动其他命令:
- 查容器完整配置与当前状态:
docker inspect <container-name>—— 关注.State.Status、.HostConfig.Memory、.NetworkSettings.IPAddress - 查健康检查结果:
docker inspect <container-name> | jq '.State.Health' - 查实时日志找错误线索:
docker logs -f --tail 50 <container-name>—— 特别关注 OOM、连接拒绝、配置加载失败等关键词

















