DevOps i automatyzacja Średnio zaawansowany 55 min

Cykl życia kontenera i diagnostyka

Uruchomisz usługę w tle, sprawdzisz jej stan i logi oraz bezpiecznie zakończysz pracę kontenera.

Wróć do listy lekcji

1. Krótka teoria

docker run tworzy nowy kontener i uruchamia jego główny proces. Flaga -d oddaje terminal i pozostawia proces w tle. Nazwa nadana przez --name ułatwia dalsze polecenia. docker ps pokazuje działające kontenery, a docker ps -a również zatrzymane. docker stop wysyła sygnał zakończenia i po czasie może wymusić zatrzymanie; docker start uruchamia ponownie ten sam kontener, natomiast kolejne docker run tworzy nowy. Kontener zakończy działanie, gdy skończy się jego główny proces. Gdy usługa nie odpowiada, najpierw porównaj stan, kod zakończenia i logi. docker logs czyta standardowe wyjście procesu, docker inspect pokazuje szczegółowy stan, a docker exec uruchamia pomocnicze polecenie tylko w działającym kontenerze. Po ćwiczeniu usuń zatrzymany kontener przez docker rm. Nie używaj docker rm -f jako pierwszej reakcji na awarię, bo stracisz okazję do odczytania logów.

2. Przykłady komend

docker run -d --name orders-web nginx:1.28

Tworzy kontener i uruchamia usługę w tle.

$ docker run -d --name orders-web nginx:1.28
docker ps -a

Pokazuje kontenery działające i zatrzymane.

$ docker ps -a
docker logs --tail 50 orders-web

Czyta ostatnie 50 linii standardowych logów kontenera.

$ docker logs --tail 50 orders-web
docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' orders-web

Odczytuje stan i kod zakończenia procesu.

$ docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' orders-web
docker exec orders-web nginx -t

Sprawdza konfigurację Nginxa wewnątrz działającego kontenera.

$ docker exec orders-web nginx -t
docker stop orders-web

Kończy pracę kontenera sygnałem zatrzymania.

$ docker stop orders-web
docker start orders-web

Ponownie uruchamia istniejący kontener.

$ docker start orders-web
docker stop orders-web && docker rm orders-web

Zatrzymuje i usuwa instancję po ćwiczeniu.

$ docker stop orders-web
$ docker rm orders-web

3. Zadanie praktyczne

Uruchom orders-web w tle. Odczytaj stan, ostatnie logi i wynik nginx -t. Zatrzymaj kontener, porównaj docker ps z docker ps -a, a następnie uruchom tę samą instancję przez docker start. Zapisz, czy jej identyfikator się zmienił. Na końcu zatrzymaj i usuń kontener.

4. Typowe błędy

  • Mylenie docker start z docker run i nieświadome tworzenie kolejnych instancji.
  • Wykonywanie docker exec na zatrzymanym kontenerze.
  • Usuwanie kontenera przed odczytem stanu i logów awarii.
  • Zakładanie, że działający kontener automatycznie oznacza działającą aplikację.

5. Podsumowanie

Cykl pracy obejmuje utworzenie, uruchomienie, zatrzymanie, ponowne uruchomienie i usunięcie kontenera. Podczas awarii sprawdzaj stan i logi przed zmianami; exec służy do kontrolowanego sprawdzenia działającej instancji.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie