Zarządzanie kontenerami
1. Wprowadzenie
W poprzednich lekcjach nauczyłeś się, czym są obrazy Dockera i jak tworzyć własne przy użyciu pliku Dockerfile. Teraz przechodzimy do kluczowego elementu pracy z Dockerem — kontenerów. To właśnie kontenery uruchamiają Twoje aplikacje na podstawie obrazów, izolując je od reszty systemu. W tej lekcji poznasz sposoby ich tworzenia, uruchamiania, monitorowania oraz zarządzania danymi i siecią.
2. Czym są kontenery Dockera
Kontener to działająca instancja obrazu Dockera — czyli uruchomione środowisko, które wykonuje określone zadanie, np. serwuje stronę WWW, uruchamia API lub skrypt. Każdy kontener:
- ma własny system plików (pochodzący z obrazu),
- może posiadać swoje porty, procesy i zmienne środowiskowe,
- działa w izolacji od innych kontenerów i hosta.
Możesz mieć wiele kontenerów opartych o ten sam obraz (np. 10 serwerów Nginx działających równolegle).
3. Tworzenie, uruchamianie i usuwanie kontenerów
3.1 Tworzenie i uruchamianie kontenerów
Podstawowe polecenie:
Przykłady:
- Uruchomienie prostego kontenera:
(Docker pobiera obraz z Docker Hub i uruchamia go jednorazowo.)
- Uruchomienie interaktywnego terminala w kontenerze:
Flagi:
-i– tryb interaktywny (input),-
-t– terminal (tty). -
Uruchomienie kontenera w tle (detached mode):
Flaga -d powoduje, że kontener działa w tle.
- Udostępnienie portu:
Flaga -p mapuje port hosta (8080) na port kontenera (80).
3.2 Wyświetlanie uruchomionych kontenerów
Pokazuje wszystkie działające kontenery (ID, nazwę, porty, status).
Aby zobaczyć również zatrzymane kontenery:
3.3 Zatrzymywanie i usuwanie kontenerów
- Zatrzymanie kontenera:
- Wznowienie zatrzymanego kontenera:
- Usunięcie kontenera:
Aby usunąć wszystkie nieużywane kontenery:
4. Logi i monitorowanie kontenerów
Docker udostępnia wbudowane narzędzia do podglądu logów i monitorowania zużycia zasobów.
4.1 docker logs — podgląd logów
Polecenie wyświetla dane wyjściowe z kontenera (np. logi aplikacji).
Przykłady:
Przydatne przy debugowaniu aplikacji, np. serwerów webowych lub skryptów backendowych.
4.2 docker stats — monitorowanie zasobów
Wyświetla aktualne zużycie CPU, pamięci, dysku i sieci przez uruchomione kontenery.
Przykładowy wynik:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT NET I/O
a2f1b3d4c6e7 nginx_app 0.35% 25.4MiB / 2GiB 1.2MB / 800kB
Można także monitorować konkretny kontener:
5. Utrwalanie danych: wolumeny (Volumes)
Kontenery są tymczasowe — po ich usunięciu wszystkie dane wewnętrzne znikają. Aby przechowywać dane trwale, Docker używa wolumenów (volumes) — specjalnych przestrzeni na dysku hosta, które mogą być współdzielone między kontenerami.
5.1 Tworzenie wolumenu
5.2 Użycie wolumenu przy uruchamianiu kontenera
Przykład z Nginx:
Dane z /usr/share/nginx/html (domyślny katalog serwera) zostaną zapisane w wolumenie mydata i nie znikną po usunięciu kontenera.
5.3 Zarządzanie wolumenami
- Lista wszystkich wolumenów:
- Szczegóły wolumenu:
- Usuwanie wolumenu:
- Usuwanie nieużywanych wolumenów:
Uwaga: wolumeny mogą być współdzielone między wieloma kontenerami, np. baza danych i aplikacja mogą korzystać z tego samego wolumenu z danymi.
6. Sieci w Dockerze
Każdy kontener działa w pewnym rodzaju sieci Dockera. Dzięki temu kontenery mogą komunikować się między sobą i ze światem zewnętrznym. Docker automatycznie zarządza siecią, ale daje też możliwość tworzenia własnych konfiguracji.
6.1 Podstawowe typy sieci
| Typ sieci | Opis |
|---|---|
| bridge | Domyślna sieć dla kontenerów uruchamianych bez specjalnych ustawień. Kontenery w tej samej sieci „bridge” mogą się ze sobą komunikować. |
| host | Kontener korzysta bezpośrednio z sieci hosta (bez izolacji). Użyteczne przy wysokowydajnych aplikacjach sieciowych. |
| overlay | Służy do łączenia kontenerów działających na różnych hostach (w klastrach, np. z Docker Swarm). |
| none | Kontener nie ma dostępu do sieci. Używane w celach bezpieczeństwa lub testów. |
6.2 Sprawdzanie sieci Dockera
- Lista wszystkich sieci:
- Szczegóły konkretnej sieci:
6.3 Tworzenie i użycie własnej sieci
Przykład:
Dzięki temu kontenery web i db mogą komunikować się między sobą po nazwach (np. db:3306), bez potrzeby znajomości adresów IP.
7. Praktyczne przykłady
7.1 Uruchomienie aplikacji z zachowaniem danych
- Tworzy kontener z bazą danych MySQL,
- Hasło root ustawia przez zmienną środowiskową,
- Dane bazy zapisuje w wolumenie
mysql_data, więc przetrwają restart.
7.2 Monitorowanie aplikacji Node.js
8. Podsumowanie
W tej lekcji poznałeś kluczowe elementy zarządzania kontenerami w Dockerze:
- Tworzenie i uruchamianie kontenerów (
docker run,docker ps,docker stop,docker rm), - Monitorowanie i diagnostykę (
docker logs,docker stats), - Trwałe przechowywanie danych z użyciem wolumenów (
docker volume), - Komunikację między kontenerami dzięki sieciom Dockera (
bridge,host,overlay).
Dzięki tym umiejętnościom możesz nie tylko uruchamiać aplikacje w izolowanych środowiskach, ale też skutecznie nimi zarządzać, analizować ich działanie oraz zapewnić im trwałość danych i komunikację w złożonych środowiskach produkcyjnych.