6.1 Obrazy (Images)
Aby efektywnie korzystać z Dockera, trzeba zrozumieć kilka kluczowych pojęć: obrazy, kontenery
i rejestry
. Przyjrzyjmy się im i zrozummy, do czego służą i jak współdziałają.
Obraz Docker — to szablon, z którego tworzone są kontenery. Obraz zawiera wszystkie potrzebne komponenty do uruchomienia aplikacji: system operacyjny, aplikację, biblioteki i zależności, a także pliki konfiguracyjne. Porównując z OOP: obraz Dockera to klasa, a kontener to obiekt klasy. Obrazy tworzy się za pomocą Dockerfile — pliku tekstowego, który opisuje proces tworzenia obrazu.
Główne cechy obrazów:
- Struktura warstwowa: obrazy składają się z kilku warstw. Jest warstwa bazowa, a każda kolejna to zmiany w stosunku do poprzedniej. To pozwala oszczędzić miejsce i skraca czas ładowania.
- Wielokrotne użycie: ten sam obraz można używać do tworzenia wielu kontenerów.
- Przenośność: obrazy można przenosić między różnymi systemami, co czyni je idealnymi dla developmentu, testowania i wdrażania aplikacji w różnych środowiskach.
Przykłady użycia obrazów:
Tworzenie własnego obrazu: możesz stworzyć swój własny obraz, pisząc Dockerfile, w którym określisz ustawienia swojej aplikacji i jej zależności.
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]
Używanie gotowego obrazu: możesz używać obrazów dostępnych w Docker Hub, aby szybko wdrożyć standardowe aplikacje, takie jak serwery WWW czy bazy danych.
docker pull nginx
To polecenie pobiera obraz nginx z publicznego repozytorium Docker Hub.
6.2 Kontenery (Containers)
Kontener Docker to uruchomiona instancja obrazu. Kontenery izolują aplikacje i ich zależności w osobnym środowisku wykonawczym, co pozwala na ich uruchamianie niezależnie od systemu gospodarza i innych kontenerów. Kontenery są lekkie, ponieważ używają jądra systemu operacyjnego gospodarza, a nie tworzą osobnego jądra, tak jak maszyny wirtualne.
Podstawowe cechy kontenerów:
- Izolacja: kontenery izolują aplikacje, zapewniając ich niezależne działanie i zapobiegając konfliktom zależności.
- Lekkość: kontenery zużywają mniej zasobów w porównaniu z maszynami wirtualnymi, gdyż nie wymagają osobnego systemu operacyjnego.
- Szybki start: kontenery startują i zatrzymują się znacznie szybciej niż maszyny wirtualne, co czyni je idealnymi dla dynamicznych środowisk i skalowania.
Przykłady użycia kontenerów:
Uruchamianie kontenera: możesz uruchomić kontener z obrazu za pomocą komendy docker run.
docker run -d -p 80:80 --name mynginx nginx
Zarządzanie kontenerami: Docker udostępnia komendy do zarządzania kontenerami: start, stop, restart, rm i exec.
docker stop mynginx
docker rm mynginx
O wszystkich komendach i ich parametrach dowiesz się na kolejnych wykładach.
6.3 Rejestry (Registries)
Rejestr Docker — to miejsce przechowywania obrazów Docker. Rejestry pozwalają programistom oraz organizacjom przechowywać, zarządzać i dystrybuować obrazy kontenerów. Istnieją rejestry publiczne oraz prywatne.
Podstawowe cechy rejestrów:
- Rejestry publiczne: takie jak Docker Hub, zapewniają dostęp do wielu obrazów tworzonych przez społeczność oraz oficjalnych programistów.
- Rejestry prywatne: są używane do przechowywania i zarządzania obrazami wewnątrz organizacji, zapewniając kontrolę dostępu i bezpieczeństwo.
- Integracja z CI/CD: rejestry łatwo integrują się z systemami ciągłej integracji i wdrażania, co umożliwia automatyzację procesu tworzenia i wdrażania obrazów.
Przykłady użycia rejestrów:
1. Docker Hub: publiczny (i najbardziej popularny) rejestr obrazów Docker. Zapewnia dostęp do wielu gotowych (i często sprawdzonych, co widać po statystykach pobrań) obrazów.
docker pull nginx
docker push myusername/myimage:tag
2. Prywatny rejestr: możesz skonfigurować i używać własnego rejestru za pomocą Docker Registry.
docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage
Interakcja między obrazami, kontenerami i rejestrami
Te trzy elementy są ściśle ze sobą powiązane i tworzą podstawę pracy z Docker:
- Tworzenie obrazu: programista tworzy obraz za pomocą Dockerfile i zapisuje go lokalnie.
- Załadowanie obrazu do rejestru: obraz jest ładowany do rejestru (na przykład Docker Hub lub prywatny rejestr), gdzie jest przechowywany i staje się dostępny dla innych użytkowników lub systemów.
- Uruchomienie kontenera: użytkownik pobiera obraz z rejestru i uruchamia kontener, który izoluje aplikację i zapewnia jej działanie.
6.4 Orkiestracja (Orchestration)
Orkiestracja — to proces zarządzania wieloma kontenerami w rozproszonej infrastrukturze. Narzędzia orkiestracji pomagają zautomatyzować wdrażanie, skalowanie i zarządzanie kontenerami.
- Kubernetes: najpopularniejsza platforma orkiestracji kontenerów, pozwalająca zarządzać klastrem kontenerów na różnych węzłach.
- Docker Swarm: wbudowana w Docker platforma orkiestracji do tworzenia i zarządzania klastrami Docker.
- Funkcje orkiestracji: automatyczne skalowanie, samodzielne odzyskiwanie, zarządzanie sieciami i balansowanie obciążenia.
6.5 Sieci (Networks)
Sieci w Docker umożliwiają kontenerom współpracę między sobą i z otoczeniem zewnętrznym. Docker oferuje kilka rodzajów sieci dla różnych scenariuszy użycia.
- Bridge: sieć domyślna tworzona przez Docker. Kontenery w sieci bridge mogą współdziałać między sobą.
- Host: kontener korzysta z interfejsów sieciowych maszyny hosta, uzyskując bezpośredni dostęp do nich.
- Overlay: używana do tworzenia sieci pomiędzy wieloma demonami Docker. Niezbędna do orkiestracji.
- None: wyłącza wszystkie interfejsy sieciowe kontenera. Przydatna do zadań izolowanych.
6.6 Wolumeny (Volumes)
Wolumeny (Volumes) — to mechanizm do trwałego przechowywania danych kontenerów. Pozwalają one na zapis danych poza kontenerem, tak aby informacje nie zostały utracone przy ponownym uruchomieniu lub usunięciu kontenera.
- Tworzenie wolumenu: wolumeny tworzone są za pomocą polecenia docker volume create.
- Montowanie wolumenu: wolumeny podłączane są do kontenerów flagą
-v
podczas uruchamiania. - Zalety: wolumeny zapewniają wygodne przechowywanie oraz wymianę danych między kontenerami, a także lepszą wydajność w porównaniu z powiązanymi katalogami (bind mounts).
Ważne!
Wolumen — to wirtualny dysk twardy, który można podłączyć do maszyny wirtualnej lub kontenera. Zazwyczaj przechowywany jest w systemie operacyjnym hosta jako zwykły plik.
GO TO FULL VERSION