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.