2017-03-15 4 views

Antwort

0

können Sie Befehl verwenden:

docker stats --no-stream | awk '{ print $3 }' | sed '1d'|sort | tail -1 

Es wird vom Behälter höchsten Speicher geben.

mir Befehl erklären lassen:

--no-stream :   Disable streaming stats and only pull the first result 
awk '{ print $3 }' : will print MEM USAGE 
sed '1d' :    will delete first entry that is % 
sort :     it will sort the result 
tail -1 :    it will give last entry that is highest. 
+2

Ich denke, das wird Ihnen sagen, den aktuellen Wert von was auch immer Container den meisten Speicher mit einer momentanen Überprüfung durch. Meine Lektüre der Frage ist, dass sie nach dem höchsten Speicher aller Container suchen, während sie Docker-Stats ausgeführt haben (nicht sofort). – BMitch

+0

Entschuldigung, ich hätte konkreter sein sollen. Ich möchte Docker Statistiken für einen längeren Zeitraum gegen einen einzelnen Container ausführen und den maximalen Speicher ermitteln, der während dieser Zeit verwendet wurde. Vielleicht etwas wie "Watch" Docker Statistiken CONTAINER --no-stream | ???? ". – grayaii

0

ich aus here und aggregierten Daten durch @pl_rock ein Stichproben Skript nahm. Aber seien Sie vorsichtig - der sort Befehl vergleicht nur String-Werte - daher sind die Ergebnisse normalerweise falsch (aber ok für mich). Bedenken Sie auch, dass der Andocker manchmal falsche Nummern meldet (dh mehr zugewiesenes Mem als physischer RAM). Hier

ist das Skript:

#!/bin/bash 

"[email protected]" & # Run the given command line in the background. 
pid=$! 

echo "" > stats 

while true; do 
    sleep 1 
    sample="$(ps -o rss= $pid 2> /dev/null)" || break 

    docker stats --no-stream --format "{{.MemUsage}} {{.Name}} {{.Container}}" | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }' >> stats 
done 

for containerid in `awk '/.+/ { print $7 }' stats | sort | uniq` 
do 
    grep "$containerid" stats | sort -r -k3 | tail -n 1 
done 
Verwandte Themen