【Docker基础】Docker容器管理:docker stats及其参数详解
目录
1 Docker监控概述
2 docker stats基本用法
2.1 基本命令格式
2.2 常用操作示例
3 docker stats参数详解
3.1 常用参数说明
3.2 输出字段解析
3.3 格式化输出示例
4 docker stats工作原理
4.1 监控数据采集流程
4.2 数据源解析
5 常见问题解答
5.1 为什么CPU使用率会超过100%?
5.2 内存统计中的cache/buffer包含在哪里?
5.3 如何监控已停止的容器?
6 总结
1 Docker监控概述
在现代容器化应用中,实时监控容器资源使用情况是运维工作的重要组成部分。Docker提供了内置的命令行工具docker stats,它能够实时显示容器的资源使用统计信息,包括CPU、内存、网络I/O和磁盘I/O等关键指标。
与传统的系统监控工具(如top、htop等)相比,docker stats具有以下优势:
- 容器级监控:直接针对容器而非整个主机或进程
- 资源隔离视图:准确反映容器实际使用的资源量
- 轻量级:无需额外安装监控代理
- 实时性:数据更新频率高,适合实时监控
2 docker stats基本用法
2.1 基本命令格式
docker stats [OPTIONS] [CONTAINER...]
2.2 常用操作示例
- 查看所有运行中容器的统计信息:
docker stats
- 查看指定容器的统计信息(可指定多个):
docker stats container1 container2
- 以表格形式显示,不持续刷新:
docker stats --no-stream
- 只显示特定列:
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
3 docker stats参数详解
3.1 常用参数说明
参数 | 缩写 | 说明 |
--all | -a | 显示所有容器(默认只显示运行中的) |
--format | 无 | 使用Go模板格式化输出 |
--no-stream | 无 | 禁用实时流,只显示当前状态 |
--no-trunc | 无 | 不截断输出信息 |
3.2 输出字段解析
docker stats 默认输出包含以下字段:
- CONTAINER ID/NAME:容器标识
- CPU %:CPU使用百分比
- MEM USAGE/LIMIT:内存使用量/限制
- MEM %:内存使用百分比
- NET I/O:网络输入/输出
- BLOCK I/O:块设备输入/输出
- PIDS:进程数
3.3 格式化输出示例
- 使用--format参数可以自定义输出格式:
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemPerc}}"
可用字段变量包括:
- .Container - 容器ID或名称
- .Name - 容器名称
- .ID - 容器ID
- .CPUPerc - CPU百分比
- .MemUsage - 内存使用量
- .NetIO - 网络I/O
- .BlockIO - 块I/O
- .MemPerc - 内存百分比
- .PIDs - 进程数
4 docker stats工作原理
4.1 监控数据采集流程

- 用户执行docker stats命令
- Docker客户端向Docker守护进程发送请求
- 守护进程通过容器运行时接口获取容器信息
- 运行时从Linux cgroups子系统中读取资源使用数据
- 数据沿原路返回并显示给用户
4.2 数据源解析
docker stats的数据主要来源于Linux内核的cgroups(控制组)子系统:
- CPU统计:来自cpuacct控制器
- 内存统计:来自memory控制器
- 网络I/O:来自网络命名空间接口统计
- 块I/O:来自blkio控制器
5 常见问题解答
5.1 为什么CPU使用率会超过100%?
Docker中CPU百分比的计算是基于单个核心的,如果一个容器被允许使用多个CPU核心,其CPU使用率可能会超过100%,例如,在4核系统上,最大可能显示400%。
5.2 内存统计中的cache/buffer包含在哪里?
docker stats显示的内存使用量不包括缓存(cache)和缓冲区(buffer),这与free -m命令不同,它只反映容器实际使用的内存量。
5.3 如何监控已停止的容器?
- 默认情况下docker stats只显示运行中的容器,要查看已停止容器的最后统计信息,可以使用:
docker stats -a
6 总结
docker stats是Docker容器监控的核心工具之一,它提供了轻量级、实时的资源使用统计。在实际生产环境中,建议将docker stats与其他监控工具(如Prometheus、Grafana等)结合使用,构建更全面的容器监控体系。