最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
服务器监控如何监控 Docker 容器的资源消耗
时间:2026-08-15 08:28:48 编辑:袖梨 来源:一聚教程网
docker stats 是最轻量、最常用的实时资源监控方式,支持快照模式和指定容器查看,输出 CPU%、内存占用及 I/O 等关键指标;需结合 docker top、docker exec top 和宿主机工具定位进程级问题;长期监控推荐 cAdvisor + Prometheus + Grafana 组合,并注意资源限制对指标解读的影响。
直接用 docker stats 就能快速看到容器的实时资源消耗,这是最轻量、最常用的方式。它不需要装额外软件,开箱即用,适合日常巡检和紧急排查。
用 docker stats 快速查看实时占用
这条命令是 Docker 原生支持的,输出清晰直观:
-
docker stats --no-stream:只输出当前快照,适合脚本调用或定时采集 -
docker stats web-app:只查指定容器,避免信息干扰 - 输出字段包括:CPU %、MEM USAGE / LIMIT、MEM %、NET I/O、BLOCK I/O
比如看到某容器 MEM % 持续接近 100% 或 CPU % 长期高于 90%,基本可以锁定问题方向。
定位具体进程:结合 docker top 和宿主机工具
docker stats 告诉你“谁吃得多”,但不说明“为什么吃”。这时需要深入容器内部:
-
docker top <container>:列出容器内所有进程及其 CPU、内存占用 -
docker exec -it <container> top:进容器运行 top,看哪个进程在狂占资源 - 在宿主机上用
iotop -o --batch查磁盘 I/O 热点,或pidstat -u 1看 CPU 时间分布
长期监控与告警:cAdvisor + Prometheus
如果要记录趋势、做容量分析或触发告警,单靠 docker stats 不够。推荐标准组合:
- cAdvisor:自动采集所有容器的 CPU、内存、网络、磁盘指标,自带 Web 页面(默认端口 8080)
- Prometheus:拉取 cAdvisor 数据并长期存储,支持 PromQL 查询和阈值告警
- 搭配 Grafana 可视化,一眼看出某容器内存是否缓慢上涨、某服务网络延迟是否突增
部署 cAdvisor 很简单,一个 docker-compose.yml 就能跑起来,无需修改应用代码。
注意资源限制与实际使用的关系
监控时别只看百分比,更要对照容器的资源限制:
- 启动时加了
--memory 512m,那MEM USAGE / LIMIT显示500MiB / 512MiB就已非常危险 - 没设限制?那
MEM USAGE显示的是宿主机总内存,数值本身参考意义不大,重点看增长趋势 -
docker inspect <container> | grep -i memory可确认实际生效的限制值