2017-03-15 10 views

Odpowiedz

0

można użyć polecenia:

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

To daje największą pamięć pojemniku.

Pozwól polecenia Wyjaśnienie:

--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

myślę, że to powie bieżącą wartość cokolwiek pojemnik korzysta najwięcej pamięci z chwilowego czeku. Moje czytanie tego pytania polega na tym, że szukają najwyższej pamięci wszystkich kontenerów w czasie, gdy działają statki doków (nie są natychmiastowe). – BMitch

+0

Przepraszam, powinienem być bardziej konkretny. Chciałbym uruchamiać statystyki doków w pojedynczym kontenerze przez dłuższy czas i dowiedzieć się, ile pamięci w tym czasie wykorzystałem. Może coś w rodzaju "oglądaj" statystyki dokerów CONTAINER --no-stream | ???? ". – grayaii

0

wziąłem skrypt próbkowania od here i danych zagregowanych przez @pl_rock. Ale bądź ostrożny - komenda sort porównuje tylko wartości ciągów - więc wyniki są zazwyczaj błędne (ale dla mnie ok). Należy również pamiętać, że okno dokowane czasami zgłasza nieprawidłowe liczby (tj. Więcej przydzielonych pamięci niż fizycznej pamięci RAM).

Oto scenariusz:

#!/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