Docker
Docker to platforma, która ułatwia tworzenie, wdrażanie i uruchamianie aplikacji w izolowanych środowiskach zwanych kontenerami. Kontenery te zawierają wszystko, co jest potrzebne do uruchomienia aplikacji, w tym kod, biblioteki, zmienne środowiskowe i pliki konfiguracyjne. Dzięki temu aplikacje mogą działać w sposób spójny niezależnie od środowiska, w którym są uruchamiane – czy to na lokalnym komputerze programisty, serwerze w centrum danych, czy w chmurze.

Jak wygląda uruchamianie takich kontenerów?
Szukamy aplikacji jaką chcemy wdrożyć w taką funkcjonalność, w tym celu wchodzimy na oficjalną strone dockera. I wyszukujemy co chcemy przetestować, bądź wdrożyć w funkcjonalność z inną aplikacją.
Pokaże teraz krok po kroku kilka przykładów jak można uruchomić taki kontener(uruchomie apache2-httpd).
I Sposób
docker pull httpd
docker run --name (nazwa_kontenera) -p 8080:80 httpd:latest
#po stworzeniu kontenera wystarczy kliknac ctrl+c, wpisujemy:
docker ps -a
#wyszkujemy nasz kontener, kopiujemy jego id i startujemy
docker start (ID_kontenera)
II Sposób
Tworzymy Dockerfile, i wpisujemy w niego:
FROM httpd:2.4
#(+dodatkowe ustawienia jakie chcemy np. można zaimportowac strony z naszego #środkowiska)
COPY ./public-html/ /usr/local/apache2/htdocs/
docker build -t my-apache2 .
docker run -dit --name (nazwa_kontenera) -p 8080:80 my-apache2
W taki sposób wdraża się aplikacje w dockerze.
Kubernetes
Kubernetes to zaawansowana platforma do orkiestracji kontenerów, która automatyzuje wdrażanie, skalowanie i zarządzanie aplikacjami kontenerowymi. Podczas gdy Docker ułatwia tworzenie i uruchamianie pojedynczych kontenerów, Kubernetes jest zaprojektowany do zarządzania wieloma kontenerami w środowiskach produkcyjnych.
Jest to bardziej zaawansowane narzędzie w stosunku do przedstawionego wyżej dockera, gdyż aby tutaj uruchomić aplikacje nie wystarczy nam jedna komenda.

Aby Kubernetes działał poprawnie, potrzebujemy co najmniej jednego węzła master oraz jednego lub więcej węzłów worker. Master zarządza klastrem, a węzły worker uruchamiają pody, które zawierają kontenery Dockera. Oto krótkie podsumowanie:
- Master: Centralny element zarządzający klastrem Kubernetes, odpowiedzialny za kontrolowanie wszystkich aktywności w klastrze. W jego skład wchodzą:
- API Server: Punkt wejściowy dla wszystkich poleceń wykonywanych w klastrze.
- etcd: Rozproszona baza danych, która przechowuje całą konfigurację i stan klastra.
- Scheduler: Odpowiada za przydzielanie zasobów klastru do podów na podstawie dostępnych zasobów i wymagań.
- Controller Manager: Zarządza kontrolerami, które monitorują stan klastra i podejmują działania naprawcze, np. restartowanie podów w razie awarii.
- Worker Nodes (Węzły robocze): Maszyny (fizyczne lub wirtualne), które uruchamiają pody i zapewniają środowisko uruchomieniowe dla kontenerów. Każdy węzeł worker zawiera:
- Kubelet: Agent, który komunikuje się z API Serverem mastera i zarządza podami na węźle.
- Kube-proxy: Usługa sieciowa, która utrzymuje reguły sieciowe na węźle i umożliwia komunikację między podami.
- Container Runtime: Oprogramowanie do uruchamiania kontenerów, takie jak Docker.
- Pod: Podstawowa jednostka w Kubernetes, która zawiera jeden lub więcej kontenerów. Pody są uruchamiane na węzłach worker i zarządzane przez mastera.
- Inne usługi: Dodatkowe komponenty, które mogą być zainstalowane w klastrze, aby zapewnić funkcjonalności takie jak monitorowanie, logowanie, zarządzanie konfiguracją i tajemnicami (Secrets).
Kubernetes automatyzuje zarządzanie tymi komponentami, co pozwala na łatwe wdrażanie, skalowanie i zarządzanie aplikacjami kontenerowymi. Dzięki Kubernetes, aplikacje mogą być uruchamiane w sposób niezawodny i skalowalny w różnych środowiskach, od lokalnych serwerów po chmurę.
Podsumowując
Docker to platforma do tworzenia, uruchamiania i zarządzania pojedynczymi kontenerami. Umożliwia programistom pakowanie aplikacji wraz z ich zależnościami w przenośne kontenery, co zapewnia spójność działania w różnych środowiskach.
Kubernetes, z kolei, jest systemem orkiestracji kontenerów, który automatyzuje wdrażanie, skalowanie i zarządzanie wieloma kontenerami w klastrze. Oferuje zaawansowane funkcje, takie jak automatyczne skalowanie, samonaprawa oraz równoważenie obciążenia.
Podczas gdy Docker doskonale nadaje się do zarządzania pojedynczymi kontenerami, Kubernetes jest idealny do zarządzania złożonymi aplikacjami składającymi się z wielu kontenerów w środowisku produkcyjnym.