docker stats 可直接查看容器实时资源占用,支持指定容器、快照输出、自定义格式及进阶排查;关键指标包括 cpu%、mem usage/limit、mem%、net i/o 和 block i/o。

直接用 docker stats 就能看,不用装额外工具,也不用写脚本。它输出的就是实时、可读的资源占用数据,关键是要懂怎么看、怎么选参数、怎么过滤关注项。
基础用法:快速上手
终端里敲一条命令,立刻看到所有运行中容器的资源消耗:
-
docker stats—— 每秒刷新一次,按 Ctrl+C 停止 -
docker stats --no-stream—— 只输出当前快照,适合脚本调用或一次性检查 -
docker stats nginx-app redis-db—— 指定多个容器名(或 ID),只显示你关心的几个
重点看哪些指标?对应什么问题
输出表格里每一列都有明确含义,重点关注这四项:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- CPU %:容器占用了多少主机 CPU 时间。持续高于 80%,说明计算密集,可能拖慢响应
-
MEM USAGE / LIMIT:比如
426MiB / 1GiB,实际用了多少、上限是多少。超限会触发 OOM Kill - MEM %:内存使用百分比,>90% 是危险信号,得查是不是内存泄漏或配置过小
- NET I/O 和 BLOCK I/O:网络收发量和磁盘读写量。突增可能意味着日志刷盘、大文件传输或数据库频繁读写
让输出更清晰:自定义格式
默认列太多?可以用 --format 只留关键字段,比如:
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemPerc}}\t{{.NetIO}}" --no-stream- 支持的字段有:
.Name、.CPUPerc、.MemUsage、.MemPerc、.NetIO、.BlockIO、.PIDs - 加
--no-trunc防止容器名被截断,尤其适合用长 ID 或带版本号的容器名
进阶场景:配合排查与自动化
单看数字不够?结合其他命令定位根因:
- 发现内存高 → 先
docker inspect 容器名看是否设了memory限制 - 怀疑是某进程吃资源 →
docker exec -it 容器名 top进去查具体进程 - 要集成到监控系统 → 调 Docker API:
curl --unix-socket /var/run/docker.sock http://localhost/v1.41/containers/xxx/stats?stream=false,返回 JSON,方便解析入库










