Docker
Docker to wiodąca, otwartoźródłowa platforma do konteneryzacji. Zmieniła ona sposób, w jaki deweloperzy budują, wdrażają i uruchamiają aplikacje. Konteneryzacja jest metodą wirtualizacji na poziomie systemu operacyjnego. Pozwala na spakowanie aplikacji wraz z jej wszystkimi zależnościami (bibliotekami, frameworkami, plikami konfiguracyjnymi) w jedną, izolowaną i przenośną jednostkę zwaną kontenerem.
Kluczowa różnica między kontenerami a tradycyjnymi maszynami wirtualnymi (VM) polega na tym, że kontenery współdzielą jądro systemu operacyjnego hosta. Maszyna wirtualna emuluje cały system sprzętowy i uruchamia pełny, gościnny system operacyjny, co jest zasobożerne. Kontener zawiera tylko samą aplikację i jej zależności. Działa jako odizolowany proces w przestrzeni użytkownika systemu hosta. Dzięki temu kontenery są niezwykle lekkie, szybkie i wydajne.
Ekosystem Dockera opiera się na kilku fundamentalnych koncepcjach:
- Obraz (Image): Szablon „tylko do odczytu” zawierający instrukcje do stworzenia kontenera. Składa się z warstw i zawiera wszystko, co jest potrzebne do uruchomienia aplikacji. Obrazy są przechowywane w rejestrach (np. Docker Hub).
- Kontener (Container): Uruchomiona instancja obrazu. Jest to lekkie, izolowane środowisko, w którym działa aplikacja.
- Dockerfile: Prosty plik tekstowy, który zawiera sekwencję poleceń służących do automatycznego zbudowania obrazu Dockera. Działa jak przepis.
- Silnik Dockera (Docker Engine): Aplikacja klient-serwer, która jest sercem platformy. Odpowiada za budowanie, uruchamianie i zarządzanie kontenerami.
Główną zaletą Dockera jest przenośność i spójność środowisk. Aplikacja spakowana w kontener będzie działać tak samo na laptopie dewelopera, na serwerze testowym i w środowisku produkcyjnym, eliminując klasyczny problem „u mnie działało”.
