Sobes.tech
Junior

Na jakich kluczowych cechach opiera się Docker?

sobes.tech AI

Odpowiedź od AI

Kluczowe cechy Dockera:

  • Izolacja procesów: Kontenery są z natury odizolowane od siebie nawzajem i od systemu host. Zapewniają to mechanizmy jądra Linux, takie jak namespaces (PID, NET, IPC, MNT, UTS) i cgroups (do ograniczania zasobów CPU, pamięci, I/O).

  • Obrazy: Obraz Dockera to niezmienny, warstwowy artefakt, który zawiera wszystko, co jest potrzebne do uruchomienia aplikacji: kod, biblioteki, zależności, narzędzia i pliki konfiguracyjne. Obrazy są budowane według zasady "warstwy na warstwach", co pozwala na ponowne użycie wspólnych komponentów i oszczędność miejsca.

  • Kontenery: Kontener to uruchomiona instancja obrazu. Jest lekki, przenośny i zawiera uruchomioną aplikację. Kontenery można szybko uruchamiać, zatrzymywać, przenosić i skalować.

  • Dockerfile: Plik Dockerfile zawiera zestaw instrukcji opisujących proces budowania obrazu Docker. To podejście deklaratywne do tworzenia obrazów, które zapewnia powtarzalność i automatyzację.

    # Przykład Dockerfile
    FROM alpine:3.14 // Obraz bazowy
    RUN apk add --no-cache nginx // Instalacja pakietów
    COPY html/ /usr/share/nginx/html/ // Kopiowanie plików
    EXPOSE 80 // Otwarcie portu
    CMD ["nginx", "-g", "daemon off;"] // Komenda przy uruchomieniu kontenera
    
  • Warstwowy system plików: Docker używa systemów plików union (AUFS, OverlayFS), które pozwalają tworzyć obrazy z warstw. Każda warstwa reprezentuje zestaw zmian w porównaniu do poprzedniej warstwy. Ta cecha umożliwia szybkie tworzenie obrazów, buforowanie warstw i efektywne wykorzystanie przestrzeni dyskowej.

  • Rejestr Docker: Rejestry Docker (np. Docker Hub, GCR, ACR) służą do przechowywania i dystrybucji obrazów Docker. Ułatwiają wymianę obrazów między programistami, zespołami i środowiskami.

  • Przenośność: Obrazy i kontenery są zaprojektowane tak, aby były przenośne. Obraz zbudowany na jednej platformie może być uruchomiony na dowolnej innej platformie, na której zainstalowany jest Docker, bez konieczności rekonfiguracji zależności.

  • Szybkie uruchamianie: Uruchomienie kontenera jest znacznie szybsze niż uruchomienie maszyny wirtualnej, ze względu na brak konieczności ładowania pełnego systemu operacyjnego.

  • Efektywne wykorzystanie zasobów: Kontenery efektywniej korzystają z zasobów systemu hosta niż maszyny wirtualne, ponieważ nie wymagają przydzielania oddzielnych rdzeni CPU.