我正在使用 Docker 来运行一些容器化应用程序。我有兴趣测量它们消耗了多少资源(就 CPU 和内存使用而言)。
有什么方法可以测量 Docker 容器消耗的资源,例如 RAM 和 CPU 使用情况?
谢谢你。
您可以从
docker stats
获取此信息,例如:
$ docker stats --no-stream
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
6b5c0fcfa7d4 0.13% 2.203 MiB / 4 MiB 55.08% 5.223 kB / 648 B 102.4 kB / 876.5 kB 3
更新:请参阅下面@Adrian Mouat 的回答,因为 docker 现在支持
docker stats
!
当前版本的 docker 中还没有内置的方法可以做到这一点。未来版本将通过 api 或插件支持此功能。
看起来确实有一个 lxc 项目,您应该能够使用它来跟踪 CPU 和内存。
此外,您还可以直接从 cgroup 读取资源指标。 请参阅下面的示例(我正在
Debian Jessie
和 docker 1.2
上运行)
> docker ps -q
afa03c363af5
> ls /sys/fs/cgroup/memory/system.slice/ | grep docker-afa03c363af5
docker-afa03c363af54815d721d938e01fe4cb2debc4f6c15ebff1851e20f6cde3ae0e.scope
> cd docker-afa03c363af54815d721d938e01fe4cb2debc4f6c15ebff1851e20f6cde3ae0e.scope
> cat memory.usage_in_bytes
4358144
> cat memory.limit_in_bytes
1073741824
这是我使用的命令:
docker stats CONTAINER_ID --no-stream --format "{{.Container}}: {{.MemUsage}}"
将 CONTAINER_ID 替换为使用以下命令找到的容器 ID:
docker container ps