3.1 Docker Engine
Docker Engine — to "silnik" Docker, czyli główne oprogramowanie, które zapewnia działanie kontenerów. Ten silnik dostarcza platformę do tworzenia, dostarczania i działania aplikacji w izolowanych kontenerach. Docker Engine zawiera parę kluczowych komponentów, które zapewniają pełną funkcjonalność Docker.
Docker Engine obejmuje trzy główne części:
- Docker Daemon: proces serwerowy. Wykonuje główne operacje na kontenerach.
- Docker API: interfejs, który umożliwia interakcję z Docker Daemon za pomocą wywołań programowych.
- Docker CLI: wiersz poleceń — interfejs do pracy z Docker.
Rola Docker Engine:
Docker Engine zarządza cyklem życia kontenerów, od tworzenia i uruchamiania do usuwania. Zapewnia izolację kontenerów, co umożliwia uruchamianie wielu kontenerów na jednym hoście bez konfliktów. Docker Engine umożliwia uruchamianie skomplikowanych aplikacji i mikrousług w kontenerach, co ułatwia ich tworzenie, testowanie i wdrażanie
.
Ewolucja Docker Engine
Od momentu swojego powstania Docker Engine przeszedł przez wiele wersji i ulepszeń. Każda aktualizacja przynosiła nowe funkcje i poprawy wydajności. Na przykład, dodano funkcje orkiestracji kontenerów, takie jak Docker Swarm, które pozwalają zarządzać klastrami kontenerów i automatyzować wdrażanie aplikacji.
3.2 Docker Daemon
Docker Daemon — to główny proces serwera, który wykonuje wszystkie operacje Dockera. Działa w tle i odpowiada za zarządzanie kontenerami, obrazami, sieciami i innymi zasobami Dockera.
Funkcje Docker Daemon:
- Tworzenie i zarządzanie kontenerami: Docker Daemon obsługuje żądania tworzenia, uruchamiania, zatrzymywania i usuwania kontenerów. Zapewnia izolację kontenerów i przydziela zasoby między nimi.
- Praca z obrazami: Docker Daemon pobiera i przechowuje obrazy kontenerów, które są używane do tworzenia kontenerów. Zarządza również cache'em obrazów w celu optymalizacji wykorzystania przestrzeni dyskowej.
- Zarządzanie siecią: Docker Daemon tworzy i zarządza sieciami Dockera, które pozwalają kontenerom na wzajemne interakcje oraz komunikację z systemami zewnętrznymi. Obsługuje różne sterowniki sieciowe i ustawienia, zapewniając elastyczność i bezpieczeństwo.
- Zarządzanie przechowywaniem: Docker Daemon zarządza wolumenami i innymi typami przechowywania używanymi przez kontenery do zapisywania danych. Zapewnia niezawodne i efektywne zarządzanie danymi wewnątrz kontenerów.
Architektura Docker Daemon
Docker Daemon korzysta z architektury klient-serwer. Klient (CLI lub API) wysyła polecenia do Docker Daemon, który je przetwarza i wykonuje. Daemon działa pod kontrolą różnych systemów operacyjnych: Linux, MacOS lub Windows.
Rola w bezpieczeństwie:
Docker Daemon odgrywa kluczową rolę w zapewnieniu bezpieczeństwa kontenerów. Zarządza prawami dostępu, ustawieniami sieciowymi i izolacją kontenerów, co pozwala ograniczyć potencjalne zagrożenia i podatności. Używając namespaces (technologia izolacji procesów i zasobów) oraz cgroups (mechanizm zarządzania zasobami), Docker Daemon izoluje procesy i kontroluje wykorzystanie zasobów przez kontenery, zapewniając ich bezpieczną pracę.
3.3 Docker API
Docker API — to interfejs programowy, za pomocą którego programiści i administratorzy systemów mogą zarządzać Dockerem przez kod. Działa na zasadzie RESTful (Representational State Transfer) — stylu architektonicznego, gdzie interakcja odbywa się poprzez standardowe zapytania HTTP, takie jak GET, POST i DELETE. To umożliwia łatwą automatyzację zadań związanych z kontenerami i integrację Dockera z innymi systemami i narzędziami.
Funkcje Docker API:
- Zarządzanie kontenerami: Docker API pozwala tworzyć, uruchamiać, zatrzymywać i usuwać kontenery, a także uzyskiwać informacje o ich stanie i logach.
- Praca z obrazami: Za pomocą API można pobierać, tworzyć, usuwać i zarządzać obrazami kontenerów.
- Operacje sieciowe: API obsługuje tworzenie i zarządzanie sieciami Dockera, w tym podłączanie i odłączanie kontenerów od sieci.
- Zarządzanie pamięcią: API udostępnia funkcje do zarządzania wolumenami i innymi typami pamięci, które są wykorzystywane przez kontenery do przechowywania danych.
Wykorzystanie Docker API:
Docker API można używać z różnymi językami programowania i narzędziami automatyzacji, takimi jak Python, Go, Java i inne. To pozwala tworzyć skrypty i aplikacje do automatyzacji procesów tworzenia, testowania i wdrażania aplikacji kontenerowych.
Przykłady użycia Docker API:
- CI/CD: Automatyzacja procesu ciągłej integracji i wdrażania, gdzie każda zmiana w kodzie automatycznie tworzy nowy kontener i testuje go.
- Monitoring i logowanie: integracja z systemami monitorującymi i logującymi do śledzenia stanu kontenerów i analizy ich wydajności.
- Orkiestracja: zarządzanie klastrami kontenerów za pomocą Docker Swarm lub Kubernetes, używając Docker API do interakcji z poszczególnymi węzłami i kontenerami.
3.4 Docker CLI
Docker CLI (Command Line Interface) — to interfejs wiersza poleceń, który umożliwia użytkownikom interakcję z Docker Daemon i wykonywanie różnych operacji na kontenerach. Docker CLI zapewnia wygodny i intuicyjny sposób zarządzania Dockerem przez terminal.
Główne komendy Docker CLI:
Docker CLI obsługuje szeroki zestaw komend, które umożliwiają wykonywanie wszystkich podstawowych operacji na kontenerach, obrazach, sieciach i magazynach. Niektóre z tych komend to:
- docker run: uruchomienie nowego kontenera z obrazu.
- docker build: stworzenie nowego obrazu z pliku Dockerfile.
- docker pull: pobranie obrazu z Docker Hub lub innego rejestru.
- docker push: wgranie lokalnego obrazu do rejestru.
- docker ps: przeglądanie listy uruchomionych kontenerów.
- docker stop: zatrzymanie uruchomionego kontenera.
- docker rm: usunięcie zatrzymanego kontenera.
- docker network: zarządzanie sieciami Dockera.
Właściwości Docker CLI:
- Łatwość użycia: Docker CLI zostało zaprojektowane tak, aby było intuicyjne i proste w użyciu. Komendy mają logiczną i prostą strukturę, co sprawia, że są dostępne nawet dla początkujących użytkowników.
- Skrypty i automatyzacja: Docker CLI pozwala na tworzenie skryptów do automatyzacji zadań związanych z kontenerami. Upraszcza to zarządzanie dużymi klastrami kontenerów i umożliwia integrację Dockera z innymi narzędziami i systemami.
- Rozszerzalność: Docker CLI obsługuje pluginy, które pozwalają rozszerzać funkcjonalność i dodawać nowe komendy. To sprawia, że Docker CLI jest elastyczne i adaptacyjne do różnych wymagań i scenariuszy użycia.
Interakcja między komponentami:
Docker CLI współpracuje z Docker Daemon za pośrednictwem Docker API. Kiedy użytkownik wpisuje komendę w Docker CLI, jest ona przekazywana do przetworzenia w Docker Daemon, który wykonuje odpowiednie działania i zwraca wynik do CLI. Ta interakcja zapewnia potężny i elastyczny sposób zarządzania kontenerami i zasobami Dockera.
Przykłady użycia Docker CLI:
- Development: programiści mogą używać Docker CLI do szybkiego tworzenia izolowanych środowisk programistycznych i testowych, co umożliwia łatwe przełączanie się między różnymi wersjami bibliotek i frameworków.
- Deployment: administratorzy mogą używać Docker CLI do automatyzacji wdrożeń aplikacji na serwery i w środowiska chmurowe, zapewniając stabilność i przewidywalność procesu.
- Debugowanie i monitoring: za pomocą Docker CLI można łatwo uzyskać dostęp do logów kontenerów, sprawdzać ich stan i debugować aplikacje.

Docker Engine, Docker Daemon, Docker API i Docker CLI — to główne komponenty zapewniające funkcjonowanie i zarządzanie kontenerami w ekosystemie Dockera. Docker Engine to rdzeń systemu, który obejmuje Docker Daemon i Docker API. Docker Daemon wykonuje wszystkie operacje związane z tworzeniem i zarządzaniem kontenerami, Docker API zapewnia programowy interfejs do interakcji z Daemon, a Docker CLI zapewnia wygodny interfejs do wykonywania różnych komend.
GO TO FULL VERSION