Architektura Dockera i jej komponenty dla początkujących

Zapoznajmy się z architekturą platformy Docker i jej podstawowymi komponentami.

Zakładam, że masz podstawową wiedzę na temat Dockera. Jeśli nie, możesz zapoznać się z tym poprzednim artykułem.

Wierzę, że rozumiesz znaczenie platformy Docker w DevOps. Teraz za tym fantastycznym narzędziem kryje się niesamowita, dobrze przemyślana architektura. Prawda?

Ale zanim o tym opowiem, pozwólcie, że przedstawię poprzednie i obecne systemy wirtualizacji.

Wirtualizacja tradycyjna a wirtualizacja nowej generacji

Wcześniej tworzyliśmy maszyny wirtualne, a każda maszyna wirtualna miała system operacyjny, który zajmował dużo miejsca i sprawiał, że był ciężki.

Teraz w przypadku kontenera docker, masz jeden system operacyjny, a zasoby są dzielone między kontenerami. Dzięki temu jest lekki i buty w kilka sekund.

Architektura Dockera

Poniżej znajduje się prosty schemat architektury platformy Docker.

Pozwól, że wyjaśnię Ci składniki architektury dockera.

Silnik Dockera

Jest to podstawowa część całego systemu Docker. Docker Engine to aplikacja działająca w architekturze klient-serwer. Jest zainstalowany na komputerze głównym. Silnik Docker Engine składa się z trzech komponentów:

  • Serwer: jest to demon dockera o nazwie dockerd. Może tworzyć i zarządzać obrazami dokowanymi. Kontenery, sieci itp.
  • Rest API: Służy do instruowania demona dockera, co ma robić.
  • Interfejs wiersza poleceń (CLI): Jest to klient, który służy do wprowadzania poleceń dockera.

Klient Dockera

Użytkownicy platformy Docker mogą wchodzić w interakcje z platformą Docker za pośrednictwem klienta. Po uruchomieniu dowolnych poleceń docker klient wysyła je do demona dockerd, który je wykonuje. Docker API jest używany przez polecenia Dockera. Klient Docker może komunikować się z więcej niż jednym demonem.

Rejestry Dockera

Jest to lokalizacja, w której przechowywane są obrazy Dockera. Może to być publiczny rejestr dockera lub prywatny rejestr dockera. Docker Hub jest domyślnym miejscem obrazów dockera, publicznym rejestrem jego sklepów. Możesz także stworzyć i uruchomić własny prywatny rejestr.

Podczas wykonywania poleceń docker pull lub docker run wymagany obraz docker jest pobierany ze skonfigurowanego rejestru. Po wykonaniu polecenia docker push obraz docker jest przechowywany w skonfigurowanym rejestrze.

Obiekty dokowane

Podczas pracy z Dockerem używasz obrazów, kontenerów, woluminów, sieci; wszystko to są obiekty Docker.

Obrazy

Obrazy platformy Docker to szablony tylko do odczytu z instrukcjami tworzenia kontenera platformy Docker. Obraz platformy Docker można pobrać z centrum platformy Docker i używać go bez zmian lub dodać dodatkowe instrukcje do obrazu podstawowego i utworzyć nowy i zmodyfikowany obraz platformy Docker. Możesz tworzyć własne obrazy dokowane również za pomocą pliku docker. Utwórz plik docker ze wszystkimi instrukcjami tworzenia kontenera i uruchomienia go; utworzy niestandardowy obraz okna dokowanego.

Obraz Dockera ma warstwę podstawową, która jest tylko do odczytu, a górną warstwę można zapisywać. Kiedy edytujesz plik docker i przebudowujesz go, tylko zmodyfikowana część jest przebudowywana w górnej warstwie.

Kontenery

Po uruchomieniu obrazu okna dokowanego tworzy on kontener okna dokowanego. Wszystkie aplikacje i ich środowisko działają w tym kontenerze. Możesz użyć Docker API lub CLI do uruchamiania, zatrzymywania, usuwania kontenera dockera.

Poniżej znajduje się przykładowe polecenie do uruchomienia kontenera dockera ubuntu:

docker run -i -t ubuntu /bin/bash

Wolumeny

Trwałe dane generowane przez platformę Docker i używane przez kontenery platformy Docker są przechowywane w woluminach. Są one całkowicie zarządzane przez docker za pośrednictwem docker CLI lub Docker API. Woluminy działają zarówno w kontenerach Windows, jak i Linux. Zamiast utrwalać dane w zapisywalnej warstwie kontenera, zawsze dobrym rozwiązaniem jest użycie do tego woluminów. Zawartość woluminu istnieje poza cyklem życia kontenera, więc użycie woluminu nie zwiększa rozmiaru kontenera.

Aby uruchomić kontener z woluminem, można użyć flagi -v lub –mount. W tym przykładowym poleceniu używasz woluminu geekvolume z kontenerem newsblog.pl.

docker run -d --name newsblog.pl  -v geekvolume:/app nginx:latest

Sieci

Sieć Docker to przejście, przez które komunikują się wszystkie izolowane kontenery. W dockerze jest głównie pięć sterowników sieciowych:

  • Bridge: jest to domyślny sterownik sieciowy dla kontenera. Korzystasz z tej sieci, gdy Twoja aplikacja działa na samodzielnych kontenerach, tj. wiele kontenerów komunikuje się z tym samym hostem dockera.
  • Host: ten sterownik usuwa izolację sieciową między kontenerami platformy Docker a hostem platformy Docker. Jest używany, gdy nie potrzebujesz żadnej izolacji sieciowej między hostem a kontenerem.
  • Nakładka: Ta sieć umożliwia komunikowanie się usług roju. Jest używany, gdy kontenery działają na różnych hostach platformy Docker lub gdy usługi roju są tworzone przez wiele aplikacji.
  • Brak: ten sterownik wyłącza całą sieć.
  • macvlan: ten sterownik przypisuje adres mac do kontenerów, aby wyglądały jak urządzenia fizyczne. Ruch jest kierowany między kontenerami przez ich adresy mac. Ta sieć jest używana, gdy chcesz, aby kontenery wyglądały jak urządzenia fizyczne, na przykład podczas migracji konfiguracji maszyny wirtualnej.
  • Wniosek

    Mam nadzieję, że daje to pojęcie o architekturze Dockera i jej podstawowych komponentach. Poruszaj się po Dockerze, aby dowiedzieć się więcej, a jeśli jesteś zainteresowany praktycznym szkoleniem, sprawdź to Kurs Docker Mastery.

    Podobał Ci się artykuł? Co powiesz na dzielenie się ze światem?