6 minut Czytania

Czym jest Docker i do czego możemy go wykorzystać w 2025 r.?

Docker to narzędzie open source stworzone, aby ułatwić rozwój, wdrażanie i uruchamianie programów. W ostatnich latach Docker i usługi kontenerowe zyskały ogromną popularność. Od swojego debiutu w 2013 roku, kiedy była to mniej znana technologia open source, Docker stał się standardem uruchamiania aplikacji, wspieranym przez wiele dużych firm, w tym Oracle.

Co to jest Docker i jak działa?

Kontener Docker to nowoczesny sposób pakowania aplikacji, który obejmuje cały kod i wszystkie zależności w jednym, standardowym formacie. Dzięki temu aplikacje mogą działać szybko i niezawodnie w różnych środowiskach obliczeniowych. Docker to lekki, autonomiczny kontener, który zawiera wszystko, co potrzebne do uruchomienia aplikacji: biblioteki, narzędzia systemowe, kod oraz środowisko uruchomieniowe. Platforma Docker umożliwia programistom sprawne tworzenie, testowanie i wdrażanie aplikacji w kontenerach.

Containers as a Service (CaaS), czyli usługi kontenerowe, to zarządzane rozwiązania chmurowe, które automatyzują i upraszczają zarządzanie cyklem życia kontenerów. Dzięki nim można łatwo organizować środowiska uruchomieniowe, skalować aplikacje i przyspieszać cały proces wdrażania.

Co to jest konteneryzacja?

Konteneryzacja to technika, która polega na umieszczaniu aplikacji oraz jej zależności w oddzielnych, przenośnych jednostkach zwanych kontenerami. Dzięki kontenerom możliwe staje się łatwiejsze wdrażanie aplikacji na różnych platformach i w różnych środowiskach, eliminując konieczność budowania infrastruktury od podstaw.

Narzędzia takie jak Docker pozwalają na tworzenie kontenerów zawierających wszystkie niezbędne komponenty potrzebne do uruchomienia aplikacji, co likwiduje problemy związane z różnicami w wersjach oprogramowania.

Konteneryzacja umożliwia również dynamiczne i szybkie skalowanie aplikacji, co jest pomocne przy dostosowywaniu się do zmieniających się potrzeb projektu. Jest to szczególnie korzystne w kontekście pracy zespołowej, gdzie wielu programistów współdzieli kod i chce uniknąć problemów z kompatybilnością środowisk.

Co to jest kontener w Docker? Do czego służy kontener w kontekście oprogramowania?

Kontener to pakiet składający się z aplikacji wraz ze wszystkimi zależnościami koniecznymi do jej uruchamiania: kod naszego programu, środowisko uruchomieniowe, biblioteki, które wykorzystujemy, lokalne bazy danych oraz pliki konfiguracyjne. Docker jest jednym z wielu narzędzi umożliwiających tworzenie kontenerów, natomiast to on zdobył największą popularność.

Grafika przedstawiająca logo docker
Logo Dockera

Kontenery powstałe za pomocą jednego narzędzia są ustandaryzowane, dzięki czemu łatwo można je uruchamiać w różnych środowiskach. Mogą to być zwykłe komputery bądź centra danych serwisów chmurowych takich jak Amazon Web Services, Google Cloud, Microsoft Azure czy Oracle Cloud.

niebieska chmura - cloud nawiązująca do centrów danych serwisów chmurowych

Jaki to ma związek z kontenerowcami? Krótka historia konteneryzacji

Nazwa została zaczerpnięta od kontenerów, zazwyczaj metalowych skrzyń o zunifikowanych wymiarach, służących do transportu. Idea przewożenia towarów w skrzyniach nie jest czymś specjalnie innowacyjnym, natomiast pochylmy się nad tym, co dało ustandaryzowanie ich rozmiarów. Jest to uznawane za jedno z najbardziej wpływowych osiągnieć XX wieku obok radia, samochodów oraz Internetu. Dzięki standardowym rozmiarom możliwe stało się stworzenie infrastruktury dopasowanej do kontenerów na całym świecie: kontenerowce, ciężarówki, pociągi oraz dźwigi kontenerowe. Efektywność takiego rozwiązania sprawiła, że cała nasza planeta stała się globalną gospodarką.

statek kontenerowiec, nawiązujący do pakietów składających się z aplikacji zwanych potocznie kontenerami

Co to ma wspólnego z oprogramowaniem? Prawdopodobnie, nawet jeśli nie zajmujesz się programowaniem, ale korzystasz z komputera, spotkałeś_aś się z sytuacją, gdy nie mogłeś_aś uruchomić lub zainstalować jakiegoś programu i usłyszałeś_aś od kogoś, komu się udało zdanie pod tytułem: „U mnie działa”. Komputer komputerowi nie równy i dwa różne środowiska mogą się różnić na setkach różnych płaszczyzn.

Spójrzmy na same systemy operacyjne. Są trzy główne kategorie:

  • Windows,
  • Mac OS,
  • Linux.

W ramach każdej kategorii istnieją dziesiątki różnych systemów i każdy z nich może występować w różnej wersji. W tych wszystkich zależnościach bez wątpienia można się pogubić. Tak jak standardowy rozmiar kontenerów ułatwił przemieszczanie przedmiotów na naszej planecie, tak Docker i inne tego typu narzędzia ułatwiają przenoszenia naszych aplikacji.

Czym różni się kontener od maszyny wirtualnej?

Możliwe, że termin „maszyna wirtualna” nie jest Ci obcy. Jest to program, który emuluje działanie komputera. Dzięki temu, na przykład jesteśmy w stanie na komputerze z systemem operacyjnym Windows stworzyć maszynę wirtualną z innym systemem operacyjnym i korzystać z jego funkcjonalności. Maszyny wirtualne również wykorzystywano i dalej wykorzystuje się do zapewnienia przenośności oprogramowania. Definiując taką maszynę specjalnie dopasowaną do naszego programu mamy gwarancję, że wykorzystując ją uda się uruchomić naszą aplikacje. Posiadają one wiele cech wspólnych z kontenerami natomiast istnieją między nimi istotne różnice:

  • rozmiar: w przypadku maszyn jest on liczony zazwyczaj w gigabajtach, natomiast w przypadku kontenerów zwykle mówimy o megabajtach;
  • maszyna wirtualna emuluje cały komputer, czyli również hardware, natomiast kontenery emulują jedynie system operacyjny. Powoduje to, że kontenery są zazwyczaj szybsze jeśli chodzi o działanie oraz czas uruchomienia.

Co oznacza Docker Compose?

Istotnym elementem Dockera jest Docker Compose, który umożliwia uruchomianie multi-kontenerowych aplikacji. Co to właściwie znaczy? Obecnie dominującym stylem tworzenia architektury aplikacji komputerowych jest tzw. architektura mikroserwisów. W ramach tego stylu nasza aplikacja jest zbiorem połączonych ze sobą niewielkich mikroserwisów, czyli komponentów naszej aplikacji, które dostarczają określoną funkcjonalność niezależnie od pozostałych komponentów. Takimi komponentami w przypadku aplikacji internetowej mogą być, na przykład:

  • baza danych;
  • serwer;
  • aplikacja kliencka (interfejs aplikacji).

Na diagramie poniżej znajduję się przykład właśnie takiej architektury. Użytkownik aplikacji, skonstruowanej w ten sposób, będzie z niej korzystał za pomocą aplikacji klienckiej, która zapewni wygodny i przyjazny interfejs. Sama aplikacja kliencka komunikuje się z serwerem, a serwer, aby obsłużyć pewne zapytania komunikuje się z bazą danych.

grafika przedstawiająca Docker Compose - architekturę aplikacji internetowej, składająca się z bazy danych, serwera i aplikacji klienckiej
Przykład architektury mikroserwisów

Każdy taki mikroserwis możemy za pomocą Dockera spakować w kontener, natomiast samo to wiązałoby się z koniecznością uruchamiania każdego z kontenerów oddzielnie oraz niezależnego konfigurowania na jakich kanałach nasz mikroserwis będzie się komunikował z innymi. Właśnie te problemy adresuje Docker Compose. Pozwala nam skonfigurować w jednym miejscu wszystkie kontenery, które składają się na naszą aplikację. Dodatkowo możemy je wszystkie na raz uruchomić za pomocą jednej komendy.

Czy Docker jest użyteczny w MLOPS

Integracja Dockera z praktykami MLOps otwiera nowe możliwości dla zarządzania cyklem życia modeli uczenia maszynowego. Używając konteneryzacji, zespoły mogą standaryzować środowiska dla modeli ML, co usprawnia ich rozwój, wdrażanie i skalowanie. Docker, dzięki swojej elastyczności i wsparciu dla architektury mikroserwisów, staje się kluczowym elementem w budowaniu efektywnych procesów MLOps, umożliwiając szybką iterację i ciągłą integrację/dostawę modeli ML.

Ten sposób wykorzystania kontenerów zwiększa spójność między środowiskami deweloperskimi i produkcyjnymi, co jest fundamentem skutecznego wdrażania praktyk MLOps.

Jeżeli jesteś zainteresowany_a pracą z najpopularniejszym narzędziem do konteneryzacji, zapoznaj się z naszym szkoleniem Docker dla początkujących!