Przegląd architektury platformy Docker i jej składniki [dla początkujących]

Opublikowany: 2020-12-31

Jeśli niedawno zetknąłeś się ze światem kontenerów, prawdopodobnie nie jest złym pomysłem zrozumienie podstawowych elementów, które współpracują ze sobą, aby oferować korzyści związane z konteneryzacją. Ale zanim to nastąpi, możesz zadać pytanie. Jaki problem rozwiązują kontenery?

Po zbudowaniu aplikacji w typowym cyklu rozwojowym programista wysyła ją do testera w celach testowych. Jednak ponieważ środowiska programistyczne i testowe są różne, kod nie działa.

Obecnie są na to przede wszystkim dwa rozwiązania – albo używasz maszyny wirtualnej, albo środowiska kontenerowego, takiego jak Docker. W dawnych dobrych czasach organizacje wdrażały maszyny wirtualne do uruchamiania wielu aplikacji.

Dlaczego więc zaczęli stosować konteneryzację na maszynach wirtualnych? W tym artykule przedstawimy szczegółowe wyjaśnienia wszystkich takich pytań.

Za tym fantastycznym narzędziem kryje się równie dobrze przemyślana architektura. Zanim poznamy składniki architektury platformy Docker, zapoznajmy się z kontenerami platformy Docker i ich wyższością od maszyn wirtualnych.

Spis treści

Kontenery Dockera

Docker to projekt typu open source, który zapewnia możliwość tworzenia, pakowania i uruchamiania aplikacji w luźno izolowanych i zamkniętych środowiskach zwanych kontenerami.

Z całą izolacją i bezpieczeństwem zapewnianym przez platformę Docker, umożliwia jednoczesne uruchamianie wielu kontenerów na określonym hoście.

Powody, dla których kontenery Docker są szeroko stosowane, obejmują

  • Pozwala programistom pisać kod lokalnie i dzielić się pracą ze swoim zespołem za pomocą kontenerów.
  • Mogą przesyłać swoje aplikacje do środowisk testowych, którymi są kontenery, i przeprowadzać testy automatyczne.
  • Po znalezieniu błędów można je naprawić w środowisku programistycznym, a następnie ponownie wdrożyć.
  • Uzyskanie poprawki jest tak proste, jak przesłanie zaktualizowanego obrazu do środowiska produkcyjnego.

Zanim zagłębimy się w ten temat, musimy odróżnić tradycyjne praktyki wirtualizacji od konteneryzacji nowej generacji.

Wirtualne maszyny a kontenery Docker

Zanim wykorzystaliśmy konteneryzację do naszych praktyk DevOps, maszyny wirtualne były na szczycie talii. Kiedyś tworzyliśmy maszyny wirtualne dla każdej aplikacji.

Podczas gdy maszyny wirtualne spełniały prawie wszystkie wymagania, wady korzystania z maszyn wirtualnych były uciążliwe i przydzielały wszystkie wymagane zasoby pamięci i sprzętu z bazowych maszyn hostów.

Jednak łatwo było tego uniknąć dzięki konteneryzacji, ponieważ kontenery zapewniają wirtualizację na poziomie systemu operacyjnego i zwykle wymagają mniej pamięci. W ten sposób stał się popularny i ostatecznie został przyjęty przez społeczność DevOps.

Źródło obrazu

Powyższy diagram opisuje różnice w architekturze maszyn wirtualnych i kontenerów oraz dlaczego kontenery przewyższają maszyny wirtualne w codziennych procesach programistycznych. W przeciwieństwie do maszyn wirtualnych kontenery znajdują się nad silnikami kontenerów, aby zapewnić wirtualizację na poziomie systemu operacyjnego, oszczędzając w ten sposób wiele zasobów.

Silnik Dockera

Przed omówieniem różnych komponentów architektonicznych platformy Docker konieczne jest zrozumienie przepływu pracy platformy Docker. Rzućmy okiem na silnik Docker i jego kilka części, które dadzą nam wyobrażenie o tym, jak działa system Docker. Docker Engine to przede wszystkim typowa aplikacja klient-serwer z trzema głównymi składnikami.

Serwer (demon)

Demon platformy Docker to ciągły proces, który działa w tle i zarządza wszystkimi obiektami platformy Docker. Nasłuchuje żądań Docker API zgłaszanych przez klienta i nieprzerwanie je przetwarza.

Reszta API

Jest to interfejs używany przez klientów Docker do interakcji z demonem Docker. Klienci mogą rozmawiać z demonem za pośrednictwem interfejsu API i mogą dostarczać mu instrukcje.

Klient

Klient Docker to interfejs wiersza poleceń (CLI), który może wchodzić w interakcje z demonem. Upraszcza cały proces zarządzania kontenerami.

Źródło obrazu

Klient platformy Docker (który może być klientem HTTP, takim jak CLI) komunikuje się z demonem, który wykonuje ciężkie zadanie tworzenia, uruchamiania i udostępniania kontenerów. Klient i demon mogą działać na tym samym komputerze lub połączyć klienta ze zdalnym demonem. Klient i demon komunikują się ze sobą za pomocą interfejsu API Rest przez gniazda lub interfejs sieciowy. Klient platformy Docker pomaga użytkownikom zarządzać obiektami platformy Docker, takimi jak kontenery, obrazy, woluminy itp. Dowiedz się więcej o projektach platformy Docker

Zapisz się na kursy rozwoju oprogramowania z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Elementy architektoniczne

Jak wspomniano wcześniej, Docker używa architektury Klient-Serwer, w której Klient komunikuje się z demonem za pośrednictwem interfejsu API Rest. Architektura platformy Docker składa się z kilku komponentów, co omówiono poniżej.

Źródło obrazu

Demon

Nasłuchuje żądań API inicjowanych przez klientów i zarządza obiektami platformy Docker, w tym kontenerami, obrazami, woluminami i sieciami. Może również komunikować się z innymi demonami w celu zarządzania usługami Docker, zwłaszcza w celu zarządzania dużymi sieciami Docker.

Klient

Użytkownicy Dockera mogą komunikować się z demonem za pomocą klienta Docker. Użytkownicy wykonują polecenia, takie jak „Docker run…”, za pomocą klienta, takiego jak CLI, który następnie przekazuje te polecenia do Dockera (demona), ostatecznie je wykonując. Klient Dockera komunikuje się z wieloma demonami.

Rejestry

Przechowuje obrazy platformy Docker i może być publiczne lub prywatne. Docker jest skonfigurowany do domyślnego wyszukiwania obrazów w Docker Hub. Gdy klient wyda polecenie ściągnij lub uruchom, obrazy są pobierane z repozytoriów.

Obiekty dokowane

Pracując z Dockerem, wchodzimy w interakcję z kilkoma obiektami, takimi jak kontenery, obrazy, woluminy, sieci itp.

Niektóre z tych obiektów są

Zdjęcia

Jest to szablon tylko do odczytu i zawiera instrukcje tworzenia kontenerów. Zawiera również metadane opisujące możliwości kontenera. Użytkownicy mogą pobierać obrazy z rejestru Docker i tworzyć na nich zapisywalne warstwy obrazów, aby tworzyć obrazy dostosowane do wymagań aplikacji. Niektóre popularne pomysły to Ubuntu, Nginx, MySQL itp. Te pomysły można dzielić między zespołami, co pomaga im we wspólnej pracy nad aplikacją.

Kontenery

Kontenery to wystąpienia obrazów, które zapewniają izolowane środowiska dla aplikacji. Mają dostęp tylko do zasobów, które są zdefiniowane przez obrazy użyte do ich zbudowania.

Sieć

Docker Networks umożliwia izolowanym kontenerom w tej samej sieci komunikowanie się i udostępnianie zasobów. Niektóre sieci dostarczane przez Docker obejmują most, host, nakładkę, Macvlan itp.

Przechowywanie

Docker umożliwia przechowywanie danych w zapisywalnej warstwie kontenera za pomocą sterowników. Docker umożliwia cztery opcje trwałego przechowywania — woluminy Docker, kontenery woluminów, montowania katalogów i wtyczki magazynu.

Najczęściej stosowaną opcją przechowywania są woluminy. Są one umieszczane w systemie plików hosta i umożliwiają kilku kontenerom udostępnianie i zapisywanie danych w tych woluminach.

Wniosek

Docker wykorzystuje zestaw podstawowych najnowocześniejszych technologii, aby zapewnić swoim użytkownikom wydajne usługi konteneryzacji. Bez wątpienia w ostatnich latach Docker zaczął zyskiwać na popularności wśród społeczności deweloperów i będzie to robić w nadchodzących latach.

Ze względu na szeroki zakres korzyści zapewnianych przez kontenery, takich jak efektywne gospodarowanie zasobami, skalowalność itp., słusznie zabezpiecza swoją pozycję na pokładzie.

W tym artykule omówiliśmy niektóre z najważniejszych koncepcji platformy Docker, takie jak przepływ pracy platformy Docker, jego architektura i podstawowe technologie, kilka obiektów platformy Docker, takich jak kontenery, obrazy, rejestry, sieci itp.

Jesteś teraz na dobrej drodze, aby zanurzyć się głęboko w piękny świat kontenerów Docker. Teraz powinieneś lepiej zrozumieć, jak różne zasoby platformy Docker współpracują ze sobą, aby zapewnić szereg funkcji, które umożliwią bezproblemowe tworzenie, wdrażanie i udostępnianie aplikacji.

Naucz się architektury Dockera z upGrad

Rozpocznij swoją przygodę z tworzeniem aplikacji w przyspieszonym tempie dzięki upGrad.

upGrad Edukacja Pvt. Ltd. oferuje ekskluzywny kurs ze specjalizacji programistycznej w DevOps, co sprawia, że ​​aspiranci są gotowi na wchłonięcie się przez wielkich gigantów IT.

Najważniejsze informacje o kursie

UpGrad Executive PG Program w specjalizacji programistycznej w Big Data to starannie zaprojektowany kurs online podzielony na 12 miesięcy.

W tym programie nauczania będziesz

  • Uzyskaj wyłączny dostęp do treści Data Science i Machine Learning
  • Pracuj nad projektami i zadaniami na żywo
  • Uzyskaj wsparcie kariery 360 stopni
  • Naucz się dziesięciu języków programowania i narzędzi
  • Uzyskaj oddany mentoring dla studentów

Przygotuj się na tworzenie aplikacji DevOps dzięki upGrad.

Po co czekać

Aplikuj już dziś!

Przygotuj się na karierę przyszłości

Aplikuj teraz na studia magisterskie z inżynierii oprogramowania