Kurs Java

Przegląd i podsumowanie

W naszej serii artykułów o Dockerze zbadaliśmy jego kluczowe aspekty, od wprowadzenia, przez instalację na Windows, po konteneryzację i zarządzanie kontenerami, szczególnie w kontekście aplikacji Java i serwerów HTTP. Skupiliśmy się na praktycznych aspektach, jak tworzenie obrazów i kontenerów oraz ich zarządzanie, podkreślając znaczenie Dockera dla deweloperów pracujących na różnych platformach. Dodatkowo, przybliżyliśmy Docker Compose, narzędzie kluczowe dla zarządzania wielokontenerowymi aplikacjami, które umożliwia efektywne wdrażanie i skalowanie projektów.

Na zakończenie, przygotowaliśmy przegląd kluczowych komend Dockera, które omawialiśmy w poprzednich rozdziałach. Zostały one zebrane w jednym miejscu, aby ułatwić Ci szybkie przypomnienie sobie, jakie działanie wykonuje każda z komend.
docker pull [nazwa_obrazu] — służy do pobierania obrazu z repozytorium Docker Hub do lokalnego środowiska. Po wpisaniu nazwy obrazu, Docker wyszuka i pobierze najnowszą wersję tego obrazu, chyba że zostanie określona inna tagowana wersja.
Komunikacja Fronted - Backend
docker run [nazwa_obrazu] — służy do uruchomienia kontenera na bazie podanego obrazu. Docker najpierw sprawdzi, czy obraz jest dostępny lokalnie, a jeśli nie, spróbuje go pobrać z Docker Hub. Po pomyślnym pobraniu i załadowaniu obrazu, komenda uruchomi kontener z tym obrazem jako bazą.
Komunikacja Fronted - Backend
docker pull nginx — używana do pobrania oficjalnego obrazu serwera HTTP nginx z Docker Hub. Po jej wykonaniu Docker sprawdzi, czy lokalnie istnieje najnowsza wersja obrazu nginx, a jeśli nie, pobierze go z Docker Hub. Domyślnie pobierana jest najnowsza wersja obrazu, chyba że zostanie określona konkretna wersja za pomocą tagu, na przykład docker pull nginx:1.19
Komunikacja Fronted - Backend
docker run -p 8080:80 nginx — używana do uruchomienia kontenera Docker z obrazem nginx, który jest popularnym serwerem HTTP. Opcja -p 8080:80 jest kluczowa, ponieważ mapuje port 80 w kontenerze (domyślny port, na którym nginx nasłuchuje) na port 8080 na Twoim hoście lokalnym.

Oznacza to, że gdy serwer nginx działa w kontenerze Docker, można uzyskać do niego dostęp z przeglądarki internetowej na hoście lokalnym, wpisując http://localhost:8080. Docker przekieruje ten ruch sieciowy z portu 8080 hosta na port 80 w kontenerze.

Jeśli Docker nie znajdzie lokalnego obrazu nginx, automatycznie pobierze najnowszą wersję z Docker Hub przed uruchomieniem kontenera.
Komunikacja Fronted - Backend
docker ps — używana do wyświetlania informacji o aktualnie uruchomionych kontenerach w Dockerze. Gdy ją wykonasz, otrzymasz listę kontenerów, które są aktywne w danym momencie, wraz z szeregiem użytecznych informacji na ich temat.
Komunikacja Fronted - Backend
docker stop [id_kontenera] — używana do zatrzymywania działającego kontenera Docker. Identyfikator kontenera możesz znaleźć poprzez użycie komendy docker ps, która wyświetla listę wszystkich uruchomionych kontenerów wraz z ich identyfikatorami.
Komunikacja Fronted - Backend
docker build -t [nazwa_obrazu]:[tag] [path_do_Dockerfile] — używana do budowania obrazu Docker na podstawie instrukcji zawartych w pliku Dockerfile. Opcja -t pozwala na nadanie tagu, czyli etykiety, nowo utworzonemu obrazowi, co ułatwia jego identyfikację i zarządzanie nim.
Komunikacja Fronted - Backend
docker images — używana w Dockerze do wyświetlania listy wszystkich obrazów dostępnych lokalnie na Twoim komputerze. Gdy wykonasz tę komendę, otrzymasz tabelę zawierającą informacje o każdym obrazie.
Komunikacja Fronted - Backend
docker run -d -p [port_hosta]:[port_kontenera] [nazwa_obrazu] — używana do uruchomienia kontenera Docker w trybie odłączonym (detached) z przekierowaniem portów. Pozwala to na uruchomienie kontenera w tle, umożliwiając kontynuację pracy w terminalu, a jednocześnie umożliwia dostęp do usług w kontenerze z zewnątrz maszyny hosta.
Komunikacja Fronted - Backend
docker logs [id_kontenera] --follow — używana do wyświetlania logów z działającego kontenera Docker oraz śledzenia nowych logów w czasie rzeczywistym. Aby wyjść z tego trybu, użyj kombinacji klawiszy CTRL+C.
Komunikacja Fronted - Backend
docker exec -it [id_kontenera] /bin/bash — używana do uruchomienia powłoki bash w działającym kontenerze Docker, umożliwiając interaktywne wykonywanie poleceń wewnątrz kontenera, takich jak ls (listowanie plików), cd (zmiana katalogu) czy pwd (wyświetlenie bieżącego katalogu).
Komunikacja Fronted - Backend
docker-compose up -d — używana do uruchamiania aplikacji zdefiniowanej w pliku docker-compose.yml. Ta komenda automatycznie buduje wszystkie obrazy, które są potrzebne (jeśli jeszcze nie istnieją), a następnie tworzy i uruchamia kontenery zgodnie z konfiguracją określoną w docker-compose.yml. Parametr -d oznacza, że kontenery będą działać w tle, a konsola będzie natychmiast dostępna do dalszych poleceń:
Komunikacja Fronted - Backend
docker-compose logs — używana do wyświetlania logów z kontenerów uruchomionych za pomocą Docker Compose. Ta komenda jest bardzo przydatna, gdy chcesz zobaczyć, co dzieje się wewnątrz Twoich kontenerów, szczególnie podczas debugowania problemów.
Komunikacja Fronted - Backend

Trwałość danych w kontenerze

Domyślnie, dane wewnątrz kontenera Docker są nietrwałe. Oznacza to, że gdy kontener jest usuwany, wszystkie dane, które zostały w nim utworzone lub zmodyfikowane, również zostają usunięte. Jest to zgodne z filozofią konteneryzacji, gdzie kontenery są lekkie i tymczasowe. Jednak w wielu przypadkach, takich jak bazy danych, logi, pliki konfiguracyjne, potrzebujemy trwałego przechowywania danych. Do tego celu Docker oferuje rozwiązania takie jak Volumeny, Bind Mounts, Tmpfs Mounts.

Zatrzymanie a usunięcie kontenera

Zatrzymanie i usunięcie kontenera w Dockerze to dwa różne procesy, które mają odmienne konsekwencje dla kontenerów i danych w nich przechowywanych.

Zatrzymanie kontenera — Polega na tymczasowym wstrzymaniu działania kontenera. Używa się do tego komendy docker stop [id_kontenera], która wysyła sygnał SIGTERM, a po upływie określonego czasu (jeśli kontener nadal działa) - sygnał SIGKILL. Zatrzymanie kontenera nie usuwa danych zgromadzonych wewnątrz kontenera lub na przypisanych do niego volumenach. Kontener w stanie zatrzymanym można później ponownie uruchomić przy użyciu docker start, co pozwala kontynuować pracę z zachowaniem stanu, w jakim kontener został zatrzymany.

Usuwanie kontenera — Jest to proces, w którym kontener jest całkowicie usuwany z systemu za pomocą komendy docker rm [id_kontenera]. Usunięcie kontenera powoduje, że wszystkie dane zapisane w jego systemie plików są tracone, chyba że są przechowywane na zewnętrznym volumenie lub bind mouncie. Po usunięciu kontenera nie ma możliwości jego przywrócenia czy odtworzenia stanu, w jakim się znajdował. To ważna różnica w porównaniu do zatrzymania, ponieważ usuwanie jest akcją definitywną i nieodwracalną.

Logi w Docker Compose

Docker Compose zachowuje logi kontenerów nawet po ich zatrzymaniu. Dzieje się tak, ponieważ Docker przechowuje logi dla kontenerów w swojej wewnętrznej bazie danych logów, a docker-compose logs pozwala na dostęp do tych logów niezależnie od tego, czy kontenery są aktualnie uruchomione, czy też zostały zatrzymane. Logi są przechowywane do momentu usunięcia kontenera. Jeśli kontener zostanie usunięty (np. za pomocą docker-compose down), jego logi również zostaną usunięte.

W zależności od konfiguracji Docker, logi mogą być ograniczone pod względem rozmiaru. Można skonfigurować Docker, aby logi były automatycznie przycinane po osiągnięciu pewnego rozmiaru.

Warto też wiedzieć, że gdy uruchomisz polecenie docker-compose logs w środowisku, gdzie działa na przykład 10 kontenerów zarządzanych przez Docker Compose, otrzymasz logi ze wszystkich tych kontenerów. Jeśli chcesz zobaczyć logi tylko z określonej usługi, możesz to zrobić, dodając nazwę usługi do polecenia, np. docker-compose logs [nazwa_usługi].

Warto wiedzieć

Chociaż nasz kurs dostarcza solidnych podstaw i praktycznych umiejętności z zakresu pracy z Dockerem, zdaję sobie sprawę, że wciąż istnieje wiele zagadnień, które mogą znacząco wzbogacić Twoją wiedzę i doświadczenie. Aby jeszcze lepiej zgłębić temat, polecam kurs Docker od podstaw - dla programistów i nie tylko. Stanowi on doskonałe uzupełnienie i rozszerzenie naszego kursu.
Natomiast jeżeli wolisz kursy anglojęzyczne, proponuję prawdziwy hit — "Docker & Kubernetes: The Practical Guide [2023 Edition]". Ponad 157 000 uczestników, ocena około 4,7.
Zdjęcie autora
Autor: Jarek Klimas
Data: 19 stycznia 2024
Labele: Backend, Poziom średniozaawansowany, Java
Dołącz do grupy, w której znajdziesz ciekawe posty oraz poznasz odpowiedzi na swoje pytania!
Grupa Portalu Javappa
  • Regularnie publikowane posty dotyczące, Springa i Hibernate'a oraz samej Javy.
  • Możliwość zadawania pytań osobom tworzącym społeczność budowaną wokół tych samych zainteresowań
  • Bezpośredni kontakt z autorem portalu i kursów Javappa!
  • Wymiana doświadczeń między członkami grupy
  • Przyjazna atmosfera w zamkniętej grupie

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE