目录
Docker stats 教程:查看实时资源用量(--no-stream、--format)
docker stats 显示容器的实时资源用量,进程查看和调试流程请参见查看日志与调试。
语法
docker stats [OPTIONS] [CONTAINER...]
docker top CONTAINER [ps OPTIONS]
参数
| 参数 | 说明 |
|---|---|
-a, --all | 显示所有容器(默认只显示运行中的容器) |
--format TEMPLATE | 使用自定义模板输出;可用 table、table TEMPLATE、json 或 Go 模板 |
--no-stream | 停止持续输出,只获取第一次结果 |
--no-trunc | 不截断输出 |
docker top 的语法接受 ps 参数;以下示例使用 -o 指定要显示的进程字段。
示例
一次查看全部容器,或指定单个容器
$ docker stats --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
0c009f73010b small 0.00% 716KiB / 64MiB 1.09% 628B / 126B 381kB / 0B 1
f3e514c09baa busy 43.08% 1.289MiB / 1.919GiB 0.07% 796B / 126B 1.83MB / 0B 1
63b9a2f9c63f web 0.00% 4.43MiB / 1.919GiB 0.23% 838B / 126B 8.95MB / 8.19kB 2
35357aad74b1 registry 2.01% 13.19MiB / 1.919GiB 0.67% 3.89MB / 19.6kB 135MB / 3.92MB 5
$ docker stats --no-stream web
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
63b9a2f9c63f web 0.00% 3.812MiB / 1.919GiB 0.19% 838B / 126B 8.95MB / 8.19kB 2
--no-stream只获取第一次结果,不会持续更新屏幕。- 不指定容器时会列出多个运行中的容器;指定
web后只列出该容器。 MEM USAGE / LIMIT同时列出用量和上限;small的上限是64MiB,其他示例容器显示1.919GiB。NET I/O、BLOCK I/O分别显示网络和块 I/O,PIDS是进程数。
使用表格模板或 JSON 输出
$ docker stats --no-stream --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}'
NAME CPU % MEM USAGE / LIMIT
small 0.00% 616KiB / 64MiB
busy 42.14% 936KiB / 1.919GiB
web 0.00% 3.723MiB / 1.919GiB
registry 0.31% 14.1MiB / 1.919GiB
$ docker stats --no-stream --format '{{json .}}' small
{"BlockIO":"381kB / 0B","CPUPerc":"0.00%","Container":"small","ID":"0c009f73010b","MemPerc":"0.79%","MemUsage":"516KiB / 64MiB","Name":"small","NetIO":"698B / 126B","PIDs":"1"}
table模板会生成字段标题;这里仅选择名称、CPU 百分比和内存用量。{{json .}}将指定容器的统计数据输出为单行 JSON。- 用量会随采样变化:
small的表格结果和 JSON 结果都显示64MiB上限,但内存用量不同。
查看容器进程和自定义字段
$ docker top web
PID USER TIME COMMAND
2315 root 0:00 nginx: master process nginx -g daemon off;
2351 101 0:00 nginx: worker process
$ docker top web -o pid,user,comm
PID USER COMMAND
2315 root nginx
2351 101 nginx
docker top列出容器中正在运行的进程;默认结果包含 PID、用户、时间和完整命令。- 使用
-o pid,user,comm自定义字段后,结果省略 TIME,COMMAND 也会以较短的进程名称显示。
相关章节
- 查看日志与调试
- docker ps 命令:列出容器
- docker inspect 命令:查看容器详细信息
- 容器生命周期
动手练习
练习:只查询 small 容器一次,并以表格列出名称和内存用量。
答案
docker stats --no-stream --format 'table {{.Name}}\t{{.MemUsage}}' small
常见问题
docker stats 如何只查询一个容器?
在命令后指定容器名称即可,例如 docker stats --no-stream web,输出只会包含 web。
docker stats 的 MEM USAGE / LIMIT 是什么?
它显示内存用量和上限。示例中的 small 显示 716KiB / 64MiB,可以直接从字段看出 64MiB 上限。
如何只查看 docker top 的 PID、USER 和 COMMAND?
使用 docker top web -o pid,user,comm,输出就会列出这三个字段。
更新于 2026年10月26日