docker stats 命令可实时监控容器 CPU、内存、网络和磁盘 I/O 使用情况,默认每秒刷新;支持 --no-stream、--format、--all、--no-trunc 等选项定制输出,配合 docker inspect 可查资源限制。

直接用 docker stats 命令就能实时监控容器的 CPU、内存、网络和磁盘 I/O 使用情况,不需要额外参数也能看到核心指标。
查看 docker stats 的帮助信息
运行以下命令获取内置帮助:
docker stats --help
它会列出所有可用选项,比如:
-
--no-stream:只输出一次快照,不持续刷新(适合脚本调用) -
--format:自定义输出格式,支持 Go 模板语法(例如只显示容器名和内存使用率) -
--all:显示所有容器(包括已停止的,默认只显示运行中) -
--no-trunc:不截断长容器名或 ID,方便识别
常用监控组合示例
日常排查时这几个用法最实用:
- 监控指定容器:
docker stats nginx redis - 只看关键指标(名称、CPU、内存、网络):
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" - 一次性快照(适合集成到监控脚本):
docker stats --no-stream --all
注意资源单位和刷新逻辑
docker stats 默认每秒刷新一次,数值是运行时的瞬时使用率或累计值:
- CPU 百分比是相对于所有 CPU 核心的总占用率(如 200% 表示用了 2 个满载核心)
- 内存显示为
used / limit,若未设 memory limit,则 limit 显示为0B或∞ - 网络和磁盘 I/O 是累计值(从容器启动开始),不是速率,需配合时间差计算带宽
替代方案:用 docker container inspect 查详细资源限制
如果想确认容器启动时设置的资源上限(如 --memory=512m 或 --cpus=1.5),用:
docker inspect -f '{{.HostConfig.Memory}} {{.HostConfig.NanoCpus}}' <容器名或ID>
这能帮你判断 stats 中的使用率是否接近硬性限制。


















