宝塔面板 Docker 插件(v4.0及之前)无容器级CPU/内存图表,仅提供启停、日志等基础功能;所有监控数据均来自宿主机psutil,不采集容器cgroup指标,也不调用Docker Daemon的/stats接口。

宝塔面板 Docker 插件有没有容器级 CPU/内存图表
没有。宝塔面板自带的 Docker 插件(v4.0 及之前版本)只提供容器启停、日志、端口映射等基础管理功能,不采集也不展示任何容器维度的实时资源指标——既没有 CPU 使用率曲线,也没有内存占用折线图,更不会区分 nginx 容器和 mysql 容器各自的消耗。所谓“内置图表”纯属误解,面板首页和监控页里看到的所有资源数据,全部来自宿主机层面的 psutil 采集,和容器无关。
为什么 docker stats 命令能看到但面板里看不到
因为 docker stats 是直接调用 Docker Daemon 的 /containers/{id}/stats HTTP 接口,实时拉取 cgroup 数据;而宝塔 Docker 插件压根没对接这个接口,也没做定时轮询或指标聚合。它连 docker ps 都是按需执行,更不会后台常驻采集进程。所以你 SSH 里敲 docker stats --no-stream 能立刻看到各容器的 CPU % 和 MEM USAGE / LIMIT,但在面板里只能靠“猜”:比如宿主机 CPU 突然飙高,再手动进终端跑一遍 docker stats 对比,才能确认是不是某个容器在捣鬼。
想在宝塔界面里看容器资源,唯一可行路径
必须绕过 Docker 插件,改用宝塔的「终端」+ 自定义命令组合,把 docker stats 输出转成可读格式,并配合简单轮询实现类监控效果:
- 进宝塔 → 终端 → 新建一个常驻脚本,内容为:
while true; do clear; docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"; sleep 3; done - 别用
docker stats默认的流式输出(会滚屏),一定要加--no-stream+--format控制列宽,否则在终端里根本没法盯 - 如果容器名太长导致错位,把
{{.Container}}换成{{.Names}},并确保容器启动时用了--name参数 - 注意权限:运行该命令的用户(通常是
www)必须属于docker用户组,否则报Got permission denied while trying to connect to the Docker daemon
真要图形化监控容器,得放弃面板依赖
宝塔不是监控平台,强行塞进去只会卡顿和失真。实际生产中靠谱的做法只有两个:
- 用
ctop:轻量、实时、键盘操作友好,sudo apt install ctop后直接运行,按s键可选按cpu或mem排序,比面板里翻来翻去快得多 - 上 Prometheus + cAdvisor:cAdvisor 会自动发现所有容器并暴露
/metrics,Prometheus 抓取后,Grafana 画图,指标全、历史可查、还能设告警——但这套完全脱离宝塔,配置项如scrape_configs、job_name都得手写,不是点点鼠标能搞定的
别指望 Docker 插件哪天突然支持图表,它的定位就是容器“开关”,不是“仪表盘”。真要监控,就得接受命令行或独立栈的事实。











