Sieć Dockera - poznaj, w jaki sposób kontenery komunikują się ze sobą



Dowiedz się wszystkiego o możliwościach sieciowych platformy Docker dzięki zrozumieniu modelu sieci kontenerów i wdrożeniu go w praktyce.

W dzisiejszym świecie przedsiębiorstwa są coraz bardziej zainteresowane konteneryzacją, która wymaga dużych umiejętności pracy w sieci, aby poprawnie skonfigurować architekturę kontenera, a tym samym wprowadza pojęcie Docker Networking.

Na tym blogu dotyczącym sieci Docker omówisz następujące tematy:





Co to jest Docker?

Aby zrozumieć platformę Docker, musisz wiedzieć o historii wdrażania aplikacji wcześniej, a następnie o tym, jak aplikacje są obecnie wdrażane przy użyciu kontenerów.

Wdrażanie aplikacji w stary i nowy sposób - Docker Networking - Edureka



Jak widać na powyższym diagramie, dawniej aplikacje miały na hoście.Zatem n liczba aplikacji współdzieli biblioteki obecne w tym systemie operacyjnym.Ale dzięki konteneryzacji system operacyjny będzie miał jądro, które jest jedyną rzeczą, która będzie wspólna dla wszystkich aplikacji.Dlatego aplikacje nie mogą uzyskiwać dostępu do bibliotek innych osób.

Więc, Doker w prostych słowach to otwarta platforma do tworzenia, wysyłania i uruchamiania aplikacji, umożliwiająca użytkownikowi oddzielenie aplikacji od infrastruktury za pomocą pojemniki szybko dostarczać oprogramowanie.

Jak więc te kontenery komunikują się ze sobą w różnych sytuacjach?



Cóż, to przychodzi przez Docker Networking.

Docker Networking

Zanim zagłębię się w Docker Networking, pozwólcie, że pokażę wam przepływ pracy Dockera.

Jak widać na powyższym schemacie. Deweloper pisze kod, który określa wymagania aplikacji lub zależności w łatwym do napisania pliku platformy Docker, a ten plik platformy Docker tworzy obrazy platformy Docker. Tak więc na tym obrazie znajdują się wszelkie zależności wymagane dla określonej aplikacji.

Teraz kontenery platformy Docker to nic innego jak instancja środowiska uruchomieniowego Docker Image. Te obrazy są przesyłane do Docker Hub (repozytorium Git dla obrazów Docker), które zawiera repozytoria publiczne / prywatne.

Tak więc z repozytoriów publicznych możesz również pobrać swój obraz i przesłać własne obrazy do Docker Hub. Następnie z Docker Hub różne zespoły, takie jak Quality Assurance lub Production, pobiorą ten obraz i przygotują własne kontenery. Te pojedyncze kontenery komunikują się ze sobą za pośrednictwem sieci w celu wykonania wymaganych czynności, a to nic innego jak Docker Networking.

Można więc zdefiniować Docker Networking jako przejście komunikacyjne, przez które wszystkie izolowane kontenery komunikują się ze sobą w różnych sytuacjach w celu wykonania wymaganych czynności.

Jak myślisz, jakie są cele sieci Docker?

Cele sieci Docker

Elastyczność - Docker zapewnia elastyczność, umożliwiając komunikację ze sobą dowolnej liczbie aplikacji na różnych platformach.

Wieloplatformowe - Docker może być łatwo używany na wielu platformach, który działa na różnych serwerach za pomocą klastrów Docker Swarm.

Skalowalność - Docker to w pełni rozproszona sieć, która umożliwia indywidualny rozwój i skalowanie aplikacji przy jednoczesnym zapewnieniu wydajności.

Zdecentralizowane - Docker wykorzystuje zdecentralizowaną sieć, co umożliwia rozpowszechnianie aplikacji i ich wysoką dostępność. W przypadku nagłego zniknięcia kontenera lub hosta z puli zasobów można albo przywołać dodatkowy zasób, albo przejść do usług, które są nadal dostępne.

Przyjazny użytkownikowi - Docker ułatwia automatyzację wdrażania usług, ułatwiając korzystanie z nich w codziennym życiu.

Wsparcie - Docker oferuje wsparcie od razu po wyjęciu z pudełka. Tak więc możliwość korzystania z Docker Enterprise Edition i uzyskania wszystkich funkcji bardzo łatwych i prostych, sprawia, że ​​platforma Docker jest bardzo łatwa w użyciu.

Aby włączyć powyższe cele, potrzebujesz czegoś, co nazywa się modelem sieci kontenerów.

Chcesz poznać różne etapy DevOps?

Model sieci kontenerowej (CNM)

Zanim powiem ci, czym dokładnie jest model sieci kontenerów, pozwól, że przedstawię ci informacje o Libnetwork, które są potrzebne, zanim zrozumiesz CNM.

Libnetwork to biblioteka Docker typu open source, która implementuje wszystkie kluczowe koncepcje składające się na CNM.

Więc, Model sieci kontenerowej (CNM) standaryzuje kroki wymagane do zapewnienia sieci dla kontenerów przy użyciu wielu sterowników sieciowych. CNM wymaga rozproszonego magazynu kluczy, takiego jak konsola, do przechowywania konfiguracji sieci.

CNM ma interfejsy dla wtyczek IPAM i wtyczek sieciowych.

Interfejsy API wtyczek IPAM służą do tworzenia / usuwania pul adresów oraz przydzielania / zwalniania adresów IP kontenerów, natomiast interfejsy API wtyczek sieciowych służą do tworzenia / usuwania sieci i dodawania / usuwania kontenerów z sieci.

CNM składa się głównie z 5 obiektów: kontrolera sieci, sterownika, sieci, punktu końcowego i piaskownicy.

Obiekty modelu sieci kontenerów

Kontroler sieci: Zapewnia punkt wejścia do Libnetwork, który udostępnia proste interfejsy API dla Docker Engine do przydzielania i zarządzania sieciami. Ponieważ Libnetwork obsługuje wiele wbudowanych i zdalnych sterowników, Network Controller umożliwia użytkownikom podłączenie określonego sterownika do danej sieci.

połączona lista w samouczku C.

Kierowca: Jest właścicielem sieci i jest odpowiedzialna za zarządzanie siecią poprzez udział wielu sterowników w celu spełnienia różnych przypadków użycia i scenariuszy wdrażania.

Sieć: Zapewnia łączność między grupą punktów końcowych, które należą do tej samej sieci i są odizolowane od reszty. Tak więc za każdym razem, gdy sieć zostanie utworzona lub zaktualizowana, odpowiedni Kierowca zostanie powiadomiony o zdarzeniu.

Punkt końcowy: Zapewnia łączność dla usług udostępnianych przez kontener w sieci z innymi usługami udostępnianymi przez inne kontenery w sieci. Punkt końcowy reprezentuje usługę, a niekoniecznie konkretny kontener, punkt końcowy ma również zasięg globalny w klastrze.

Piaskownica: Tworzone, gdy użytkownicy żądają utworzenia punktu końcowego w sieci. Piaskownica może mieć wiele punktów końcowych podłączonych do różnych sieci reprezentujących konfigurację sieci kontenera, taką jak adres IP, adres MAC, trasy, DNS.

Tak więc było to 5 głównych obiektów CNM.

Teraz pozwólcie, że opowiem wam o różnych sterownikach sieciowych związanych z siecią Docker.

Chcesz przenieść DevOps na wyższy poziom?

Sterowniki sieciowe

Istnieje głównie 5 sterowników sieciowych: Bridge, Host, None, Overlay, Macvlan

Most: Sieć mostkowa to prywatna domyślna sieć wewnętrzna utworzona przez docker na hoście. Tak więc wszystkie kontenery otrzymują wewnętrzny adres IP, a te kontenery mogą uzyskiwać do siebie dostęp za pomocą tego wewnętrznego adresu IP. Sieci Bridge są zwykle używane, gdy aplikacje działają w samodzielnych kontenerach, które muszą się komunikować.

Gospodarz : Ten sterownik usuwa izolację sieci między hostem platformy Docker a kontenerami platformy Docker, aby bezpośrednio korzystać z sieci hosta. Dzięki temu nie będzie można uruchamiać wielu kontenerów internetowych na tym samym hoście, na tym samym porcie, który jest teraz wspólny dla wszystkich kontenerów w sieci hosta.

Żaden : W tego rodzaju sieci kontenery nie są dołączone do żadnej sieci i nie mają dostępu do sieci zewnętrznej ani innych kontenerów. Tak więc ta sieć jest używana, gdychcesz całkowicie wyłączyć stos sieciowy w kontenerze iutworzyć tylko urządzenie sprzężenia zwrotnego.

Narzuta : Tworzy wewnętrzną sieć prywatną, która obejmuje wszystkie węzły uczestniczące w klastrze roju. Tak więc sieci Overlay ułatwiają komunikację między usługą roju a samodzielnym kontenerem lub między dwoma samodzielnymi kontenerami w różnych demonach Dockera.

Macvlan: Umożliwia przypisanie adresu MAC do kontenera, dzięki czemu staje się on fizycznym urządzeniem w sieci. Następnie demon Docker kieruje ruch do kontenerów na podstawie ich adresów MAC. Sterownik Macvlan to najlepszy wybór, gdy oczekuje się bezpośredniego połączenia z siecią fizyczną, a nie kierowania przez stos sieciowy hosta Dockera.

narzędzia wykorzystywane w analizie dużych zbiorów danych

W porządku, więc to była cała teoria potrzebna do zrozumienia sieci Docker. Teraz pozwólcie, że przejdę dalej i pokażę wam praktycznie, w jaki sposób tworzone są sieci i kontenery komunikują się ze sobą.

Praktyczny

Tak więc, zakładając, że wszyscy z was zainstalowali Dockera w swoich systemach, mam scenariusz do zaprezentowania.

Załóżmy, że chcesz przechowywać nazwę i identyfikator kursów, do których będziesz potrzebować aplikacji internetowej. Zasadniczo potrzebujesz jednego kontenera dla aplikacji internetowej i potrzebujesz jeszcze jednego kontenera jako MySQL dla zaplecza, ten kontener MySQL powinien być połączony z kontenerem aplikacji internetowej.

A może praktycznie wykonam powyższy przykład.

Kroki związane:

  • Zainicjuj Docker Swarm, aby utworzyć klaster Swarm.
  • Utwórz sieć nakładkową
  • Twórz usługi zarówno dla aplikacji internetowych, jak i MySQL
  • Połącz aplikacje przez sieć

Zacznijmy!

Krok 1: Zainicjuj Docker Swarm na komputerze.

docker swarm init --advertise-addr 192.168.56.101

Flaga –advertise-addr konfiguruje węzeł menedżera do publikowania jego adresu jako 192.168.56.101. Inne węzły w roju muszą mieć dostęp do menedżera pod adresem IP.

Krok 2: Teraz, jeśli chcesz dołączyć ten węzeł menedżera do węzła roboczego, skopiuj łącze, które otrzymujesz podczas inicjowania roju w węźle roboczym.
Krok 3: Utwórz sieć nakładkową.

docker network create -d overlay myoverlaynetwork

Gdzie myoverlay jest nazwą sieci, a -d umożliwia uruchamianie demona Dockera w tle.

Krok 4.1: Utwórz usługę webapp1 i użyj utworzonej sieci, aby wdrożyć tę usługę w klastrze roju.

usługa docker create --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

Gdzie -psłuży do przekierowania portów,hsharto nazwa konta w Docker Hub, a webapp to nazwa aplikacji internetowej, która jest już obecna w Docker Hub.

Krok 4.2: Teraz sprawdź, czy usługa została utworzona, czy nie.

usługa docker ls

Krok 5.1: Teraz utwórz usługę MySQL i użyj utworzonej sieci, aby wdrożyć usługę w klastrze roju.

usługa docker create --name mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Krok 5.2: Teraz sprawdź, czy usługa została utworzona, czy nie.

usługa docker ls

Krok 6.1: Następnie sprawdź, który kontener działa w węźle głównym i przejdź do kontenera hshar / webapp.

docker ps

Krok 6.2: Możesz więc zobaczyć, że tylko usługa aplikacji internetowej znajduje się w węźle menedżera. Więc wejdź do kontenera aplikacji internetowej.

docker exec -it identyfikator_kontenera bash nano var / www / html / index.php

Polecenie docker ps wyświetli oba kontenery z ich odpowiednimi identyfikatorami kontenerów. Drugie polecenie włączy ten kontener w trybie interaktywnym.

Krok 7: Teraz zmień $ servername z localhost na mysql i $ password z „” ”na„ edureka ”, a także zmień wszystkie wymagane dane bazy danych i zapisz plik index.php za pomocą skrótu klawiaturowego Ctrl + x, a następnie y, aby zapisać, i naciśnij enter.

Krok 8: Teraz przejdź do kontenera mysql, który działa w innym węźle.

docker exec -it identyfikator_kontenera bash

Krok 9: Po wejściu do kontenera mysql wprowadź poniższe polecenia, aby użyć bazy danych w MySQL.

Krok 9.1: Uzyskaj dostęp do korzystania z kontenera mysql.

mysql -u root -pedureka

Gdzie -u reprezentuje użytkownika, a -p jest hasłem twojego komputera.

Krok 9.2: Utwórz bazę danych w mysql, która będzie używana do pobierania danych z webapp1.

UTWÓRZ BAZĘ DANYCH HandsOn

Krok 9.3: Użyj utworzonej bazy danych.

UŻYWAJ HandsOn

Krok 9.4: Utwórz tabelę w tej bazie danych, która będzie używana do pobierania danych z webapp1.

UTWÓRZ TABELĘ course_details (nazwa_kursu VARCHAR (10), identyfikator_kursu VARCHAR (11))

Krok 9.5: Teraz zamknij MySQL i kontener, używając polecenia Wyjście .

różnica między javascript i jquery

Krok 10: Przejdź do przeglądarki i wprowadź adres jako localhost: 8001 / index.php . Otworzy się Twoja aplikacja internetowa. Teraz wprowadź szczegóły kursów i kliknij Prześlij zapytanie .

Krok 11: Po kliknięciu przycisku Prześlij zapytanie przejdź do węzła, w którym działa usługa MySQL, a następnie przejdź do kontenera.

docker exec -it identyfikator_kontenera bash mysql -u root -pedureka UŻYJ HandsOn POKAŻ tabele wybierz * z course_details

Spowoduje to wyświetlenie wyników wszystkich kursów, których szczegóły zostały uzupełnione.

Tutaj kończę mój blog Docker Networking. Mam nadzieję, że podobał Ci się ten post. Możesz sprawdzić inne blogi również w serii, która dotyczy podstaw Dockera.

Jeśli uważasz, że ten blog Docker Container jest odpowiedni, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 450 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka DevOps Certification Training pomaga uczniom zdobyć wiedzę na temat różnych procesów i narzędzi DevOps, takich jak Puppet, Jenkins, Docker, Nagios, Ansible i GIT, do automatyzacji wielu kroków w SDLC.

Szukasz certyfikacji w DevOps?

Masz do mnie pytanie? Wspomnij o tym w sekcji komentarzy, a skontaktuję się z Tobą.