docker stats

Pokazuje na żywo zużycie CPU, RAM i sieci przez kontenery.

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 lub table.

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.