【问题标题】:Memory usage of Docker containersDocker 容器的内存使用情况
【发布时间】:2013-09-28 03:52:09
【问题描述】:

我正在使用 Docker 运行一些容器化应用程序。我有兴趣测量它们消耗了多少资源(就 CPU 和内存使用而言)。

有没有办法衡量 Docker 容器消耗的资源,例如 RAM 和 CPU 使用率?

谢谢。

【问题讨论】:

  • docker ps | awk '{print $1}' | grep -v CONTAINER 中的行;做 docker ps | grep $line | awk '{printf $NF" "}' && echo $(( cat /sys/fs/cgroup/memory/docker/$line*/memory.usage_in_bytes / 1024 / 1024 ))MB ;完成

标签: memory resources cpu-usage measurement docker


【解决方案1】:

更新:请参阅下面@Adrian Mouat 的回答,因为 docker 现在支持 docker stats

在当前版本的 docker 中没有内置的方法来做到这一点。未来的版本将通过 api 或插件支持这一点。

看起来确实有一个 lxc 项目,您应该可以使用它来跟踪 CPU 和内存。

【讨论】:

  • 您现在可以使用docker stats 执行此操作。我已经添加了一个答案,但您可能想要更新这个答案以及它是已接受的答案。
【解决方案2】:

您可以从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

【讨论】:

  • 有没有办法测量容器在其整个生命周期中任何特定时间使用的最大资源?
  • @Khatri 不容易(至少我知道)。我认为您必须使用一些监控解决方案,例如普罗米修斯并取样。
【解决方案3】:

此外,您可以直接从 cgroups 读取资源指标。 请参见下面的示例(我在 Debian Jessiedocker 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

【讨论】:

  • 我在 Ubuntu 上,几年后,我没有一个名为 system.slice 的子文件夹 - 它改名了吗?现在这个级别有一个docker 子文件夹...
  • Mac 用户怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2018-03-22
  • 2022-06-13
相关资源
最近更新 更多