Docker Stats 的一些统计备忘

按内存占用统计容器

1
2
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}" | sort -k2 -h -r

统计所有容器内存占用总和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
docker stats --no-stream --format "{{.MemUsage}}" | \
awk '{
split($1, a, "/"); # 分割 "100MiB / 2GiB" 这样的字符串
mem = a[1]; # 提取第一部分(实际使用量)

if (mem ~ /GiB/) {
gsub(/GiB/, "", mem);
sum += mem;
} else if (mem ~ /MiB/) {
gsub(/MiB/, "", mem);
sum += mem / 1024; # 1 GiB = 1024 MiB
} else if (mem ~ /KiB/) {
gsub(/KiB/, "", mem);
sum += mem / (1024 * 1024); # 1 GiB = 1024 * 1024 KiB
} else if (mem ~ /B/) {
gsub(/B/, "", mem);
sum += mem / (1024 * 1024 * 1024); # 1 GiB = 1024^3 B
}
}
END {
printf "Total Memory Usage: %.2f GiB\n", sum
}'