3.1 docker stats 命令
Docker 提供了一个实时监控容器的内置工具 —— docker stats
命令。这个命令可以追踪容器的主要性能指标,比如 CPU、内存、网络和磁盘的使用情况。接下来我们来看看如何使用 docker stats 来了解你的容器的状态和性能。
docker stats
命令会实时提供每个容器的动态统计信息。它展示以下几个指标:
- CPU %: 容器的 CPU 使用百分比。
- MEM USAGE / LIMIT: 容器的内存使用情况及设置的限制。
- MEM %: 容器的内存使用百分比。
- NET I/O: 网络流量(进和出)。
- BLOCK I/O: 磁盘输入/输出操作次数。
- PIDS: 容器内部运行的进程数量。
docker stats
命令的基本用法
运行不带参数的 docker stats
命令会显示所有正在运行的容器的指标:
Terminal
docker stats
docker stats
命令输出示例:
Terminal
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d9b100f2f636 my_nginx 0.07% 1.24MiB / 1.952GiB 0.06% 1.68kB / 0B 0B / 12.3MB 2
fa3f3f3f3f3f my_postgres 2.13% 230.5MiB / 1.952GiB 11.52% 2.12MB / 2.05MB 85.6MB / 45.2MB 10
监控特定容器
你可以通过指定容器的名称或 ID 来追踪特定容器的指标:
Terminal
docker stats my_nginx
3.2 配置命令 docker stats
docker stats
命令的参数
docker stats
支持多个选项,可以自定义数据输出:
--all
或-a
: 显示所有容器的指标,包括已停止的容器。--no-stream
: 仅输出一次指标数据并终止命令。--format
: 使用模板格式化数据输出。
使用参数 --no-stream
的示例
一次性输出所有容器的指标数据:
Terminal
docker stats --no-stream
使用参数 --format
的示例
格式化数据输出:
Terminal
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
输出示例:
Terminal
CONTAINER ID CPU % MEM USAGE / LIMIT
d9b100f2f636 0.07% 1.24MiB / 1.952GiB
fa3f3f3f3f3f 2.13% 230.5MiB / 1.952GiB
3.3 实际使用 docker stats
示例 1: 追踪服务器负载
你可以用 docker stats 来监控服务器上的容器,找到那些对 CPU 或内存负载很高的容器。这能帮你优化资源使用并提高应用的性能。
Terminal
docker stats
示例 2: 测试期间监控特定容器
在测试应用的新版本或更改配置时,你可以追踪特定容器的指标,确保没有对性能产生负面影响。
Terminal
docker stats my_test_container
示例 3: 与监控系统集成
你可以用 --format
选项将 docker stats
的输出格式化为你监控工具兼容的格式,从而集成到外部监控系统中。
Terminal
docker stats --no-stream --format "{{.Container}}: CPU {{.CPUPerc}}, MEM {{.MemUsage}}"
docker stats 命令的限制
虽然 docker stats
提供了实时有用的指标,但它也有一些限制:
- 指标有限: 该命令仅显示基础指标,无法提供容器状态的详细信息。
- 手动使用: docker stats 适合手动使用,但对于自动化监控和告警,最好用像 Prometheus 和 Grafana 这样的专业工具。
GO TO FULL VERSION