docker stats to wbudowany w Dockera podgląd zużycia zasobów przez kontenery w czasie rzeczywistym. W jednej tabeli zobaczysz, ile dany kontener zjada CPU, pamięci RAM, ruchu sieciowego, operacji dyskowych (block I/O) oraz ile procesów (PIDs) odpala. To pierwsze narzędzie, po które sięgasz, gdy host nagle dyszy, a Ty chcesz wiedzieć, który kontener jest winowajcą — bez instalowania niczego dodatkowego. Domyślnie pokazuje tylko działające kontenery i odświeża dane na żywo, dopóki nie przerwiesz go Ctrl+C.
Składnia i najważniejsze opcje
Podstawowa składnia wygląda tak: docker stats [OPCJE] [KONTENER...]. Bez argumentów dostajesz wszystkie uruchomione kontenery; możesz też podać konkretne nazwy lub ID.
-a,--all— pokazuje wszystkie kontenery, łącznie z zatrzymanymi (te będą miały zera).--no-stream— pobiera jeden zrzut danych i kończy, zamiast odświeżać w pętli. Idealne do skryptów.--no-trunc— nie skraca długich ID kontenerów w wyświetlaniu.--format— formatuje wyjście przez szablon Go, np. tylko wybrane kolumny lubtable.
To w zasadzie cały zestaw flag — docker stats jest celowo prosty. Cała moc kryje się w --format i --no-stream.
Przykłady użycia
docker stats— pokazuje na żywo zużycie zasobów wszystkich działających kontenerów.docker stats web db redis— monitoruje tylko trzy wskazane kontenery, resztę pomija.docker stats --no-stream— robi jeden pomiar i wraca do shella; przyda się w cronie albo pipeline.docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"— czysta tabela z nazwą, CPU i pamięcią, bez zbędnych kolumn.docker stats --format "{{.Name}}: {{.MemPerc}}"— kompaktowa linijka per kontener, dobra do logowania.
Częste błędy i pułapki
Najczęstsza wpadka: ludzie wpisują docker stats w skrypcie i dziwią się, że „wisi”. Bez --no-stream komenda działa w nieskończonej pętli — w automatyzacji zawsze dodawaj tę flagę. Druga pułapka to interpretacja kolumny MEM USAGE: dla kontenerów współdzielących pamięć cache liczby potrafią mylić, a limit po prawej to limit kontenera lub całego hosta, jeśli go nie ustawiłeś. Pamiętaj też, że CPU % bywa wyższy niż 100% — to normalne, bo wartość sumuje się po rdzeniach (400% = cztery rdzenie na full). Na koniec: docker stats pokazuje stan chwilowy, nie historię — do trendów potrzebujesz osobnego monitoringu (cAdvisor, Prometheus). I drobiazg: kolumna BLOCK I/O liczy tylko operacje na urządzeniach blokowych, więc zapisy do tmpfs się tam nie pojawią.
Powiązane komendy: docker ps, docker top, docker inspect, docker container logs, docker system df oraz klasyczne top i htop na samym hoście.