Co się dzieje wewnątrz uruchomionego kontenera?
Dowiedz się jak wyświetlić listę procesów uruchomionych w kontenerze i statystyki zużycia zasobów

Wstęp
Podstawowe operacje na kontenerach poznaliśmy w poniższym artykule:

W tym artykule skupię się na opisaniu metod sprawdzania co się dzieje wewnątrz uruchomionego kontenera, czyli komend:
- docker container top
- docker container stats
Zanim rozpoczniemy omawianie tych komend, musimy uruchomić kontenery, na których przeprowadzimy operacje:
- Serwer aplikacji Apache Tomcat:
docker container run -d --name tomcat tomcat

tomcat
z obrazu tomcat
- Bazę danych PostgreSQL - przy uruchamianiu musimy zdefiniować do niej hasło przy pomocy zmiennej środowiskowej
POSTGRES_PASSWORD
. Zmienną środowiskową możemy ustawić przy pomocy flagi--env
lub-e
w skróconej wersji jak poniżej:
docker container run -d --name postgres -e POSTGRES_PASSWORD=password postgres

postgres
ze zmienną środowiskową POSTGRES_PASSWORD
z obrazu postgres
Następnie możemy sprawdzić, czy kontenery zostały poprawnie uruchomione komendą:
docker container ls
STATUS
powinien być Up X minutes
, czyli "Uruchomiony od X minut":

Lista procesów
W systemie operacyjnym Linux listę procesów możemy wyświetlić komendą ps
(process status) lub top
(table of processes). Komenda top
wyświetli dodatkowo statystyki zużycia zasobów:

top

ps
W podobny sposób możemy użyć komendę ps
lub top
przechodząc do środka kontenera poleceniem:
docker container exec -it <nazwa-kontenera> /bin/sh
Jednakże nie w każdym kontenerze są one zainstalowane.
Na szczęście w bardzo prosty sposób możemy wyświetlić listę procesów uruchomionych w danym kontenerze komendą docker container top
:

docker container top
służącej do wyświetlania listy procesówOpcje w komendzie
docker container top
pochodzą z komendy ps
(np. flaga -e
sprawi, że lista procesów zostanie wyświetlona w standardowym formacie). Wszystkie możliwe opcje możesz sprawdzić w manualu komendą man ps
. Komenda docker container top
domyślnie uruchamia komendę ps -ef
wewnątrz kontenera.
Lista procesów składa się z kolumn:
- UID - identyfikator użytkownika, który uruchomił proces
- PID - unikalna liczba identyfikująca proces, czyli identyfikator procesu
- PPID - identyfikator procesu-rodzica, który go uruchomił
- C - wykorzystanie procesora przedstawione w procentach jako liczba całkowita
- STIME - czas uruchomienia procesu
- TTY - terminal powiązany z procesem. Znak zapytania
?
oznacza, że żaden terminal nie jest powiązany - TIME - czas przez który wykorzystywano procesor
- CMD - komenda jaka została użyta do uruchomienia procesu

tomcat

postgres
Widzimy, że kontener tomcat
posiada uruchomiony jeden proces, zaś kontener postgres
siedem, z czego sześć zostało uruchomionych przez proces z PID
równym 967744 (posiadają ten sam PPID
).
Statystyki zużycia zasobów
Do wyświetlenia statystyk zużycia zasobów dla wszystkich kontenerów służy komenda docker container stats
:

docker container stats
służącej do wyświetlania statystyk zużycia zasobówUruchomi ona podgląd, który będzie odświeżać się na bieżąco. Podgląd składa się z kolumn:
- CONTAINER ID - unikalny, alfanumeryczny ciąg znaków, który identyfikuje kontener
- NAME - nazwa kontenera, którą nadaliśmy podczas jego uruchamiania
- CPU % - procent wykorzystania procesora hosta
- MEM USAGE / LIMIT - wykorzystanie pamięci RAM i limit, który może osiągnąć kontener. Jeżeli limit nie został ustawiony, będzie nim całkowita pamięć RAM hosta
- MEM % - procent wykorzystania pamięci RAM hosta
- NET I/O - całkowita liczba bajtów, która została odebrana i wysłana przez sieć
- BLOCK I/O - całkowita liczba bajtów odczytana i zapisana przez system plików kontenera
- PIDS - liczba działających procesów wewnątrz kontenera

Aby podgląd nie był odświeżany na bieżąco, należy użyć komendy:
docker container stats --no-stream
Jeżeli chcemy wyświetlić statystyki tylko dla konkretnych kontenerów, możemy w komendzie podać ich nazwy oddzielone spacją.
Może się zdarzyć, że liczba
PIDS
z komendy docker container stats
nie będzie zgadzać się z liczbą procesów wyświetlonych przez komendę docker container top
. Oznacza to, że niektóre procesy tworzą wiele wątków.
Podsumowanie
W tym artykule pokazałem Ci jak wyświetlić listę procesów uruchomionych w danym kontenerze poprzez komendę docker container top
oraz jak sprawdzić statystyki zużycia zasobów poprzez komendę docker container stats
.
Komendy te są proste do zapamiętania i bardzo pomocne przy sprawdzaniu co się dzieje wewnątrz uruchomionego kontenera.
Postarałem się także objaśnić kolumny, które są wyświetlane przez te komendy (dokumentacja dockera, w trakcie pisania tego artykułu, nie posiadała do nich opisu dla komendy docker container top
).
Wspomniałem także, że komenda docker container top
korzysta z flag komendy ps
, z czego nie każdy zdaje sobie sprawę.
Liczba komentarzy:
Zaloguj się lub dołącz do społeczności Javowców, aby móc uczestniczyć w dyskusji 🙂