docker stats 是最轻量、最常用的实时资源监控方式,支持快照模式和指定容器查看,输出 CPU%、内存占用及 I/O 等关键指标;需结合 docker top、docker exec top 和宿主机工具定位进程级问题;长期监控推荐 cAdvisor + Prometheus + Grafana 组合,并注意资源限制对指标解读的影响。
直接用 docker stats 就能快速看到容器的实时资源消耗,这是最轻量、最常用的方式。它不需要装额外软件,开箱即用,适合日常巡检和紧急排查。
这条命令是 Docker 原生支持的,输出清晰直观:
docker stats --no-stream:只输出当前快照,适合脚本调用或定时采集docker stats web-app:只查指定容器,避免信息干扰比如看到某容器 MEM % 持续接近 100% 或 CPU % 长期高于 90%,基本可以锁定问题方向。
docker stats 告诉你“谁吃得多”,但不说明“为什么吃”。这时需要深入容器内部:
docker top <container>:列出容器内所有进程及其 CPU、内存占用docker exec -it <container> top:进容器运行 top,看哪个进程在狂占资源iotop -o --batch 查磁盘 I/O 热点,或 pidstat -u 1 看 CPU 时间分布如果要记录趋势、做容量分析或触发告警,单靠 docker stats 不够。推荐标准组合:
部署 cAdvisor 很简单,一个 docker-compose.yml 就能跑起来,无需修改应用代码。
监控时别只看百分比,更要对照容器的资源限制:
--memory 512m,那 MEM USAGE / LIMIT 显示 500MiB / 512MiB 就已非常危险MEM USAGE 显示的是宿主机总内存,数值本身参考意义不大,重点看增长趋势docker inspect <container> | grep -i memory 可确认实际生效的限制值