dockerstats 是轻量级容器资源监控工具,通过挂载 docker socket 和系统路径采集 cpu、内存、网络及磁盘 i/o 数据,并提供 web 实时仪表盘,默认每 2 秒刷新,支持展开历史趋势图。

使用 DockerStats 实时监控容器资源消耗,核心是运行一个轻量级容器来收集宿主机上所有 Docker 容器的 CPU、内存、网络和磁盘 I/O 数据,并通过 Web 界面直观展示。它不依赖 Docker Engine API 的高级权限,适合快速部署和日常运维观察。
安装并启动 DockerStats
确保宿主机已安装 Docker 且服务正在运行。执行以下命令一键拉取并启动 DockerStats:
- docker run -d --name dockerstats -p 8080:8080 --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /proc:/proc:ro dockersamples/docker-stats
- --privileged 是必需的,用于访问 cgroups 和 procfs 中的底层指标
- 挂载 /var/run/docker.sock 使容器能与 Docker 守护进程通信
- 其他挂载路径(/sys、/proc、/rootfs)用于读取系统级资源统计
访问 Web 监控界面
启动成功后,在浏览器中打开 http://宿主机IP:8080 即可看到实时仪表盘。页面默认每 2 秒刷新一次,显示所有运行中容器的:
- CPU 使用率(百分比,支持多核归一化)
- 内存使用量与限制值(含 RSS、Cache、Swap 分项)
- 网络收发字节数(按容器网络接口聚合)
- 磁盘读写字节数与 IOPS(基于 blkio cgroup 数据)
点击任一容器行可展开详细历史趋势图(保留最近 100 个采样点)。
常见问题与调优建议
DockerStats 默认适配主流 Linux 发行版,但部分环境需注意:
- CentOS/RHEL 8+ 或启用了 cgroup v2 的系统,需添加 --cgroup-parent=/docker 或改用兼容镜像(如 mazzolino/docker-stats)
- 若页面空白或数据为 0,检查是否遗漏 --privileged 或挂载了错误的 docker.sock 路径(如 snap 安装的 Docker 可能路径不同)
- 如只需 CLI 输出,可进入容器执行 docker exec -it dockerstats sh -c "docker-stats --no-web" 查看终端流式数据
替代方案与适用边界
DockerStats 适合快速查看、调试和小规模集群。但它不存储历史数据、不支持告警、也不适配 Swarm/K8s 编排环境:
- 长期监控推荐搭配 cAdvisor + Prometheus + Grafana
- 生产环境建议启用 Docker 自带的 docker stats --no-stream 做脚本化巡检
- 单机调试时,可配合 htop、iotop 和 nethogs 进行交叉验证










