Co to jest Docker?

Docker 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 Docker przypomina trochę maszynę wirtualną. W przeciwieństwie do niej zamiast tworzyć cały wirtualny system operacyjny, Docker 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 Dockera i rozszerzyć go zgodnie z własnymi potrzebami.

 

Oprogramowanie Docker 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 Docker docker zapewnia interfejs wiersza poleceń , CLI, który pozwala użytkownikom na interakcję z demonami Dockera.

🐳 Obiekty
Obiekty platformy Docker to różne jednostki używane do składania aplikacji w platformie Docker. 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 Docker to szablon tylko do odczytu służący do tworzenia kontenerów. Obrazy służą do przechowywania i wysyłania aplikacji.

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

🐳 Rejestry
Rejestr platformy Docker to repozytorium obrazów platformy Docker. Klienci platformy Docker łą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 Docker 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 suż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 Docker i nie tylko…

Docker Swarm zapewnia natywną funkcjonalność klastrowania dla kontenerów Docker, która zamienia grupę silników Docker w jeden wirtualny silnik. W Docker 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 awaria kontenera spowodowana jest zwykłą awarią, czy najzwyczajniej nie jest już potrzebna, 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 sobie 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 docker 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 poznanej już komendy docker run będzie to docker run –help.

Wszystkie polecenia znajdziemy w dokumentacji Dockera.

Podstawowe komendy

Poniżej wymienimy i krótko opiszemy komendy docker-a, z którymi powinniśmy zaznajomić się w pierwszej kolejności.

> docker run

> docker create

> docker inspect

> docker stack

> docker system

> docker ps

> docker start

> docker images

> docker logs

Dlaczego warto korzystać z platformy Docker?

Korzystanie z platformy Docker 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 Dockerowi 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ą Docker.

 

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 Docker 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 Docker można bezproblemowo przenosić z lokalnych maszyn programistycznych do wdrożeń produkcyjnych (np w AWS).
Kontenery Docker ułatwiają uruchamianie większej ilości kodu na każdym serwerze, poprawiając wykorzystanie i oszczędzając pieniądze.

 

Kiedy używać platformy Docker?

Możesz używać kontenerów Docker jako podstawowego bloku konstrukcyjnego do tworzenia nowoczesnych aplikacji i platform. Docker 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 Docker.
  • 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.