Podstawowe Pojęcia
Kontener
Kontenery to lekkie, przenośne i samowystarczalne jednostki, które zawierają wszystkie elementy potrzebne do uruchomienia aplikacji, takie jak kod, runtime, system operacyjny, biblioteki i zależności.
- Izolacja: Kontenery działają w izolacji od siebie oraz od hosta, co zapewnia, że zmiany w jednym kontenerze nie wpływają na inne kontenery ani na system operacyjny hosta.
- Wydajność: Ponieważ kontenery dzielą ten sam system operacyjny hosta, są bardziej wydajne w użyciu zasobów niż tradycyjne maszyny wirtualne.
Obraz (Image)
Obraz Dockera to statyczny plik zawierający system plików oraz wszystkie zasoby potrzebne do uruchomienia kontenera. Jest to swoisty blueprint dla kontenera.
- Warstwowość: Obrazy są zbudowane z warstw, co umożliwia ponowne użycie warstw i zmniejsza ilość danych potrzebnych do przechowywania i przesyłania.
- Tworzenie: Obrazy są tworzone z plików Dockerfile, które zawierają zestaw instrukcji, jak zbudować obraz.
Dockerfile
Dockerfile to skrypt w formie pliku tekstowego zawierający zestaw instrukcji do budowy obrazu Dockera. Każda instrukcja w Dockerfile dodaje nową warstwę do obrazu.
- Przykład:
FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
W powyższym przykładzie:
FROM
określa bazowy obraz.WORKDIR
ustawia katalog roboczy w kontenerze.COPY
kopiuje pliki z hosta do kontenera.RUN
wykonuje polecenie w trakcie budowy obrazu.CMD
określa domyślne polecenie do uruchomienia po starcie kontenera.
Docker Engine
Docker Engine to serce platformy Docker, składające się z kilku kluczowych komponentów.
- Komponenty:
- Docker Daemon: Proces działający w tle, który zarządza kontenerami i obrazami na hoście.
- REST API: Interfejs pozwalający na komunikację z daemonem za pomocą HTTP.
- CLI (Command Line Interface): Narzędzie wiersza poleceń umożliwiające użytkownikom interakcję z Dockerem.
Rejestr Docker (Docker Registry)
Rejestr Docker to usługa przechowywania i dystrybucji obrazów Docker. Najbardziej znanym publicznym rejestrem jest Docker Hub.
- Publiczny vs Prywatny: Docker Hub oferuje zarówno publiczne, jak i prywatne repozytoria obrazów. Organizacje mogą również tworzyć własne prywatne rejestry do użytku wewnętrznego.
Volumes (Wolumeny)
Wolumeny to mechanizm zarządzania danymi w kontenerach. Umożliwiają trwałe przechowywanie danych niezależnie od cyklu życia kontenera.
- Typy: Istnieją trzy główne typy wolumenów:
- Named Volumes: Wolumeny nazwane, które są zarządzane przez Docker i mogą być współdzielone między kontenerami.
- Anonymous Volumes: Wolumeny anonimowe, które są tworzone dynamicznie bez nazwy.
- Host Volumes: Wolumeny hosta, które są mapowane bezpośrednio na katalogi hosta.
Sieci (Networks)
Docker oferuje różne typy sieci do łączenia kontenerów z sobą oraz z siecią zewnętrzną.
- Typy:
- Bridge Network: Domyślna sieć, która umożliwia komunikację między kontenerami na tym samym hoście.
- Host Network: Używa sieci hosta bez izolacji sieciowej między kontenerem a hostem.
- Overlay Network: Umożliwia komunikację między kontenerami na różnych hostach, co jest przydatne w klastrach Docker Swarm.