Co to jest Docker?

Platforma ta jest narzędziem zaprojektowanym w celu ułatwienia tworzenia, wdrażania i uruchamiania aplikacji przy użyciu kontenerów. Kontenery umożliwiają spakowanie aplikacji wraz ze wszystkimi jej częściami, takimi jak biblioteki czy inne zależności, i wdrożyć je jako jeden pakiet.

 

W pewnym sensie program przypomina trochę maszynę wirtualną. W przeciwieństwie do niej zamiast tworzyć cały wirtualny system operacyjny, program pozwala aplikacjom na używanie tego samego jądra Linux’a, co system, na którym działa. 

 

Co ważne, Docker jest oprogramowaniem typu open source. Oznacza to, że każdy może wnieść swój wkład do programu i rozszerzyć go zgodnie z własnymi potrzebami.

Oprogramowanie Dockera jako oferta usługowa składa się z trzech komponentów:

 

🐳Oprogramowanie


Demon Docker, zwany dockerd, jest trwałym procesem, który zarządza kontenerami Dockera i obsługuje obiekty kontenerów. Demon nasłuchuje żądań wysyłanych przez interfejs API Docker Engine. Wywołany program kliencki Dockera zapewnia interfejs wiersza poleceń, CLI, który pozwala użytkownikom na interakcję z demonami Dockera.

🐳 Obiekty


Obiekty platformy Dockera to różne jednostki używane do składania aplikacji w platformie. Główne klasy obiektów Dockera to obrazy, kontenery i usługi.

Kontener Dockera to standardowe, hermetyzowane środowisko, w którym działają aplikacje. 

🔹 Kontener jest zarządzany za pomocą Docker API lub CLI.

🔹 Obraz platformy Dockera to szablon tylko do odczytu służący do tworzenia kontenerów. Obrazy służą do przechowywania i wysyłania aplikacji.

🔹 Usługa Dockera umożliwia skalowanie kontenerów w wielu demonach platformy. Wynik jest znany jako klaster, zbiór współpracujących demonów, które komunikują się przez Docker API.

🐳 Rejestry


Rejestr platformy Dockera to repozytorium obrazów platformy Docker. Klienci platformy Dockera łączą się z rejestrami, aby pobierać („ściągać”) obrazy do użytku lub przekazywać („wypychać”) utworzone przez siebie obrazy. Rejestry mogą być publiczne lub prywatne. Dwa główne rejestry publiczne to Docker Hub i Docker Cloud. Docker Hub to domyślny rejestr, w którym Docker szuka obrazów. Rejestry Dockera umożliwiają również tworzenie powiadomień na podstawie zdarzeń.

Docker Compose służy do definiowania i uruchamiania wielokontenerowych aplikacji Dockera. Używa plików YAML do konfigurowania usług aplikacji oraz wykonywania procesów tworzenia i uruchamiania wszystkich kontenerów za pomocą jednego polecenia. Narzędzie docker-compose CLI umożliwia uruchamianie poleceń na wielu kontenerach jednocześnie (np. tworzenie obrazów, skalowanie kontenerów i ich uruchamianie). Plik docker-compose.yml służy do definiowania usług aplikacji i zawiera różne opcje konfiguracyjne, np. opcja build definiuje opcje konfiguracji, takie jak ścieżka pliku Dockerfile, a opcja command umożliwia zastąpienie domyślnych poleceń platformy Dockera i nie tylko…

Docker Swarm zapewnia natywną funkcjonalność klastrowania dla kontenerów Dockera, która zamienia grupę silników Dockera w jeden wirtualny silnik. W Dockerze 1.12 i nowszych, tryb Swarm jest zintegrowany z Docker Engine.

Narzędzie docker-swarm CLI, umożliwia uruchamianie kontenerów Swarm,tworzenie tokenów wykrywania, czy też wyświetlanie listy węzłów w klastrze, lecz to nie koniec funkcjonalności tego narzędzia.

Docker node umożliwia uruchamianie różnych poleceń w celu zarządzania węzłami w klastrze (np. wyświetlanie listy węzłów w klastrze, aktualizowanie węzłów i usuwanie węzłów z klastra).

Co to jest “kontener”?

Wbrew pozorom te kontenery nie mają zbyt dużo wspólnego z tymi, które widujesz w dokach, nad morzem. 

 

W dużym skrócie jest to samodzielny byt umieszczony na małym fragmencie naszego dysku twardego. Na tym fragmencie dysku znajdują się pliki wymagane do prawidłowego uruchomienia i działania aplikacji / programu / procesu. Zależy to od tego co znajduje się w kontenerze. Każdy kontener dostaje część hardware z naszej maszyny tylko na swój własny użytek (dysk, RAM, sieć, itp.). Dzięki temu kontenery są całkowicie niezależne od siebie oraz od komputera hosta. Technologią która umożliwia nam taki podział zasobów hosta są tzw. namespaces. To one umożliwiają nam izolowanie zasobów per proces, w tym konkretnym przypadku – per kontener. Najważniejsza rzecz o której musimy pamiętać to fakt, iż kontenery uruchamiają się na komputerze hoście wewnątrz przydzielonych tylko dla siebie zasobów i są totalnie niezależne od tego co znajduje się w innych kontenerach oraz na hoście. Każda uruchomiona aplikacja bądź proces w kontenerze również nie wie nic i nie zna innych plików niż te, które pochodzą z tworzącego go obrazu.

 

Można uznać, że kontenery wymagają trzech kategorii oprogramowania:

🔹 Builder: technologia używana do budowy kontenera.

🔹 Silnik: technologia używana do obsługi kontenera.

🔹 Orkiestracja: technologia używana do zarządzania wieloma kontenerami.

 

Kontenery posiadają zdolność do zginania śmierci i odradzania “na żądanie”. Niezależnie od tego, czy uszkodzenie kontenera spowodowana jest zwykłą awarią, czy najzwyczajniej nie jest już potrzebny, gdy ruch na serwerze jest niski. Kontenery są “tanie” w uruchomieniu. Zostały one zaprojektowane tak, aby bezproblemowo pojawiały się i znikały. Dodatkowo zarządzanie nimi jest zautomatyzowane.

To czym właściwie jest ten obraz?

Obraz w nomenklaturze Dockera nie jest niczym odkrywczym. Można go porównać do płyty CD z grą (bądź w różny sposób zdobywanego obrazu tej płyty). 

Dane zapisane na płycie są tylko do odczytu. Przed uruchomieniem gry są najczęściej kopiowane na dysk twardy, a jej włożenie do napędu powodowało automatyczną instalację. Ma to swoje odzwierciedlenie w obrazie Dockera. Podczas tworzenia kontenera pliki z obrazu kopiowane są na fragment dysku twardego przeznaczonego tylko dla tego kontenera. Przy uruchamianiu jest wykonywana domyśla komenda startowa zdefiniowana w obrazie.

“Baczność żołnierzu!” – komendy CLI i przykłady podstawowych komend

Po zainstalowaniu Docker Desktop, do naszej dyspozycji otrzymamy bardzo wygodny Dashboard. Możemy w nim sprawdzić w jakim stanie znajdują się nasze kontenery, uruchomić te wyłączone, podejrzeć logi, statystyki, itp. Wszystko wewnątrz GUI. Drugą formą komunikacji z kontenerami jest Docker Client i wiersz poleceń. To tutaj tak naprawdę mamy pełną władzę.

 

Listę wszystkich dostępnych poleceń możemy sprawdzić wpisując w naszym terminalu dockera i klikając Enter. Jeżeli chcemy zobaczyć więcej szczegółów na temat pojedynczego polecenia, wystarczy, że wpiszemy docker nazwa-polecenia –help, czyli przykładowo dla komendy docker run będzie to docker run –help.

Wszystkie polecenia znajdziemy w dokumentacji programu.

Dlaczego warto korzystać z platformy Docker?

Korzystanie z platformy Dockera umożliwia szybsze wysyłanie kodu, standaryzację operacji aplikacji, płynne przenoszenie kodu i oszczędzanie pieniędzy dzięki lepszemu wykorzystaniu zasobów. Dzięki programowi otrzymujesz pojedynczy obiekt, który można niezawodnie uruchamiać w dowolnym miejscu. Prosta składnia Dockera zapewnia pełną kontrolę. Szerokie zastosowanie oznacza, że ​​istnieje solidny ekosystem narzędzi i gotowych aplikacji, które są gotowe do użycia z platformą.

 

SZYBCIEJ DOSTARCZAJ
WIĘCEJ OPROGRAMOWANIA
STANDARYZUJ OPERACJE
PŁYNNIE SIĘ PORUSZAJ
OSZCZĘDZAJ PIENIĄDZE
Docker umożliwia wysyłanie izolowanych usług tak często, jak potrzeba.Użytkownicy platformy Dockera dostarczają oprogramowanie średnio 7 razy częściej niż użytkownicy niekorzystający.  Małe aplikacje kontenerowe ułatwiają wdrażanie, identyfikowanie problemów i wycofywanie ich w celu naprawienia. Aplikacje oparte na platformie Dockera można bezproblemowo przenosić z lokalnych maszyn programistycznych do wdrożeń produkcyjnych (np w AWS). Kontenery Dockera ułatwiają uruchamianie większej ilości kodu na każdym serwerze, poprawiając wykorzystanie i oszczędzając pieniądze.

 

Kiedy używana jest platforma Docker?

Możesz używać kontenerów programu jako podstawowego bloku konstrukcyjnego do tworzenia nowoczesnych aplikacji i platform. Platforma ułatwia tworzenie i uruchamianie rozproszonych architektur mikrousług, wdrażanie kodu za pomocą ustandaryzowanej ciągłej integracji i potoków dostarczania, budowanie skalowalnych systemów przetwarzania danych oraz tworzenie w pełni zarządzanych platform dla programistów.

 

MIKROUSŁUGI
PRZETWARZANIE DANYCH
  • Twórz i skaluj architektury aplikacji rozproszonych, korzystając ze standardowych wdrożeń kodu przy użyciu kontenerów Dockera.
  • Zapewnij przetwarzanie dużych zbiorów danych jako usługę. Pakuj dane i pakiety analityczne do przenośnych kontenerów, które mogą być wykonywane przez użytkowników nietechnicznych.
CIĄGŁA INTEGRACJA I DOSTAWA
KONTENERY JAKO USŁUGA
  • Przyspiesz dostarczanie aplikacji poprzez standaryzację środowisk i usuwanie konfliktów między stosami językowymi a wersjami.
  • Twórz i dostarczaj rozproszone aplikacje z zawartością i infrastrukturą zarządzaną i zabezpieczoną przez IT.