我启动了多个docker容器并使用docker stats,我已经验证其中一个增加了ram内存的消耗量,因为它从启动到重新启动为止。
我的问题是,是否有任何方法可以验证这种消耗来自docker容器的位置。有一些方法可以检查容器内部的消耗情况,某种类似于docker stats样式,但可以用于容器内部。
感谢您的合作。
答案 0 :(得分:1)
不确定是不是您要的内容,但这是一个示例:
(开始之前):
docker run --rm -it ubuntu
stress
和apt-get update
来安装apt-get install stress
stress --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1
(它将开始消耗内存)top
如果您转到新的终端,则可以输入docker container exec -it <your container name> top
,您将得到类似以下内容的信息:
(请注意,%MEM
的{{1}}用法是PID 285
)
68.8%
docker container exec -it dreamy_jang top
top - 12:46:04 up 22 min, 0 users, load average: 1.48, 1.55, 1.12
Tasks: 4 total, 2 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 20.8 us, 0.8 sy, 0.0 ni, 78.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 6102828 total, 150212 free, 5396604 used, 556012 buff/cache
KiB Swap: 1942896 total, 1937508 free, 5388 used. 455368 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
285 root 20 0 4209376 4.007g 212 R 100.0 68.8 6:56.90 stress
1 root 20 0 18500 3148 2916 S 0.0 0.1 0:00.09 bash
274 root 20 0 36596 3072 2640 R 0.0 0.1 0:00.21 top
284 root 20 0 8240 1192 1116 S 0.0 0.0 0:00.00 stress
同样,在新终端上,键入ps aux
(请注意,docker container exec -it <your container name> ps aux
的{{1}}用法是%MEM
)
PID 285
我对此事68.8%
的来历来自以下问题:How to fill 90% of the free memory?