Przejdź do głównej zawartości

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.