Docker容器的内存使用情况

66

我正在使用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; - staticx
5个回答

98
你可以通过 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

3
在容器完整的生命周期中,有没有办法测量容器在任何特定时间使用的最大资源? - Khatri
1
@Khatri 没有简单的方法(至少我不知道)。我认为你需要使用一些监控解决方案,例如 Prometheus 并进行采样。 - Adrian Mouat

16

1
现在您可以使用 docker stats 来完成此操作。我已经添加了一个答案,但是您可能也想更新这个答案,因为它是被接受的。 - Adrian Mouat

5

此外,您可以直接从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的子文件夹... - halfer
那么对于Mac用户呢? - Joe

3
请查看以下命令以获取docker容器的CPU和内存使用情况:
- `docker status container_ID` #检查单个容器资源
enter image description here - `for i in $(docker ps -q); do docker stats $i --no-trunc --no-stream ; echo "--------";done` #检查/列出所有容器资源
enter image description here - `docker stats --all` #实时检查所有容器资源
enter image description here - `docker system df -v` #检查存储相关信息
enter image description here

请尽量提供文本而不是图片/截图。 - ggorlen

0
  • Docker容器的内存使用情况

    docker system df -v

  • 本地Docker空间

    df -kh


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接