如何在一个Bash
命令行中计算在本地Docker
引擎上运行的Docker
容器使用的总内存?
答案 0 :(得分:6)
我使用以下命令计算以MB为单位的总内存。
docker stats --no-stream --format 'table {{.MemUsage}}' | sed 's/[A-Za-z]*//g' | awk '{sum += $1} END {print sum "MB"}'
或者如果任何大于1GiB
docker stats --no-stream --format 'table {{.MemUsage}}' | sed 's/\.\([0-9]*\)GiB/\1MiB/g' | sed 's/[A-Za-z]*//g' | awk '{sum += $1} END {print sum "MB"}'
答案 1 :(得分:0)
tl; dr
docker stats --no-stream --format '{{.MemUsage}}' | awk '{print $1}' | sed 's/GiB/ * 1024/;s/MiB//;s/KiB/ \/ 1024/' | bc -l | awk '{s+=$1} END {print s}'
打破这一点:
docker stats --no-stream --format '{{.MemUsage}}'
-仅获取内存使用情况
awk '{print $1}'
-从每一行剥离总内存
sed 's/GiB/ * 1024/;s/MiB//;s/KiB/ \/ 1024/'
-将值归一化为MiB
bc -l
-运行计算
awk '{s+=$1} END {print s}'
-所有行加起来
答案 2 :(得分:-1)
无论容器大小如何(KiB,MiB或GiB)获得总内存
docker stats --no-stream --format 'table {{.MemUsage}}' | sed -n '1!p' | cut -d '/' -f1 | sed 's/GiB/ * 1024 MiB/;s/MiB/ * 1024 KiB/;s/KiB/ * 1024/; s/$/ +\\/; $a0' | bc | numfmt --to=iec-i --suffix=B "$@"