计算Bash中Docker容器使用的总内存

时间:2017-12-14 16:52:28

标签: bash docker sh

如何在一个Bash命令行中计算在本地Docker引擎上运行的Docker容器使用的总内存?

3 个答案:

答案 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 "$@"