Docker Networking - preskúmajte, ako kontajnery medzi sebou komunikujú



Dozviete sa všetko o možnostiach sieťového pripojenia Docker s porozumením modelu sieťovej nádoby a jej implementácie pomocou praktického testu.

V dnešnom svete sa podniky začali zaujímať o kontajnerizáciu, ktorá si vyžaduje správne sieťové zručnosti na správnu konfiguráciu architektúry kontajnerov, a tým sa zavádza koncept Docker Networking.

V tomto blogu o Docker Networking sa budete venovať nasledujúcim témam:





Čo je Docker?

Aby ste pochopili Docker, potrebujete vedieť o histórii spôsobu, akým boli aplikácie nasadené predtým, a potom o tom, ako sú aplikácie nasadené pomocou kontajnerov teraz.

Nasadenie aplikácií starým a novým spôsobom - Docker Networking - Edureka



Ako vidíte na vyššie uvedenom diagrame, starý spôsob mal aplikácie na hostiteľovi.Takže n počet aplikácií zdieľa knižnice prítomné v tomto operačnom systéme.Ale s kontajnerizáciou bude mať operačný systém jadro, ktoré je jedinou vecou, ​​ktorá bude spoločná pre všetky aplikácie.Aplikácie teda nemôžu navzájom pristupovať do knižníc.

Takže Docker zjednodušene povedané je to otvorená platforma pre vývoj, prepravu a spustenie aplikácií, ktorá umožňuje používateľovi oddeliť aplikácie od infraštruktúr pomocou nádob na rýchle dodanie softvéru.

Ako teda tieto kontajnery medzi sebou komunikujú v rôznych situáciách?



To prichádza cez Docker Networking.

Docker Networking

Predtým, ako sa ponorím do siete Docker Networking, dovoľte mi ukázať vám pracovný tok Dockeru.

Ako vidíte na vyššie uvedenom diagrame. Vývojár napíše kód, ktorý určuje požiadavky na aplikáciu alebo závislosti v ľahko napísateľnom súbore Docker File, a tento súbor Docker File vytvára obrázky Docker. Takže na tomto obrázku sú prítomné akékoľvek závislosti, ktoré sa vyžadujú pre konkrétnu aplikáciu.

Teraz nie sú Docker Containers nič iné ako runtime inštancia Docker Image. Tieto obrázky sa nahrávajú do Docker Hub (úložisko Git pre obrázky Docker), ktoré obsahuje verejné / súkromné ​​úložiská.

Takže z verejných úložísk môžete tiež vytiahnuť svoj obrázok a môžete nahrať svoje vlastné obrázky do Docker Hub. Potom z Docker Hub rôzne tímy, ako sú tímy zabezpečovania kvality alebo produkčné tímy, vytvoria tento obrázok a pripravia vlastné kontajnery. Tieto jednotlivé kontajnery navzájom komunikujú prostredníctvom siete s cieľom vykonať požadované akcie. Nie je to nič iné ako Docker Networking.

Takže môžete definovať Docker Networking ako komunikačný priechod, cez ktorý všetky izolované kontajnery navzájom komunikujú v rôznych situáciách, aby vykonali požadované akcie.

Čo si myslíte, aké sú ciele Docker Networking?

Ciele Docker Networking

rozdiel medzi kuchárom a zodpovedným

Flexibilita - Docker poskytuje flexibilitu tým, že umožňuje vzájomnú komunikáciu ľubovoľného počtu aplikácií na rôznych platformách.

Cross-platform - Docker možno ľahko použiť na viacerých platformách, ktoré fungujú na rôznych serveroch pomocou klastrov Docker Swarm.

Škálovateľnosť - Docker je plne distribuovaná sieť, ktorá umožňuje aplikáciám rásť a škálovať jednotlivo a zároveň zaisťovať výkon.

Decentralizované - Docker používa decentralizovanú sieť, ktorá umožňuje rozšírenie aplikácií a ich vysokú dostupnosť. V prípade, že vo vašom fonde zdrojov náhle chýba kontajner alebo hostiteľ, môžete vyvolať ďalší zdroj alebo prejsť na služby, ktoré sú stále k dispozícii.

Užívatelsky prívetivý - Docker uľahčuje automatizáciu nasadenia služieb a umožňuje ich ľahké použitie v každodennom živote.

podpora - Docker ponúka out-of-the-box podporuje. Vďaka schopnosti používať Docker Enterprise Edition a získať všetky funkcie veľmi ľahko a jednoducho je použitie platformy Docker veľmi jednoduché.

Ak chcete povoliť vyššie uvedené ciele, potrebujete niečo známe ako model kontajnerovej siete.

Chcete preskúmať rôzne fázy DevOps?

Model kontajnerovej siete (CNM)

Predtým, ako vám poviem, čo to vlastne je Model kontajnerovej siete, dovoľte mi, aby som vás informoval o Libnetwork, ktorá je potrebná skôr, ako pochopíte CNM.

Libnetwork je open source knižnica Docker, ktorá implementuje všetky kľúčové koncepty, ktoré tvoria CNM.

Takže Model kontajnerovej siete (CNM) štandardizuje kroky potrebné na zabezpečenie sietí pre kontajnery pomocou viacerých sieťových ovládačov. Na uloženie konfigurácie siete vyžaduje server CNM distribuovaný obchod s kľúčmi a hodnotami, ako je napríklad konzola.

CNM má rozhrania pre pluginy IPAM a sieťové pluginy.

Rozhrania API doplnkov IPAM sa používajú na vytváranie / odstraňovanie skupín adries a prideľovanie / zrušenie pridelenia adries IP kontajnerov, zatiaľ čo rozhrania API sieťových doplnkov sa používajú na vytváranie / odstraňovanie sietí a na pridávanie a odstraňovanie kontajnerov zo sietí.

CNM stavalo hlavne na 5 objektoch: Network Controller, Driver, Network, Endpoint a Sandbox.

Objekty sieťového modelu kontajnera

Sieťový radič: Poskytuje vstupný bod do Libnetwork, ktorý sprístupňuje jednoduché API pre Docker Engine na alokáciu a správu sietí. Pretože Libnetwork podporuje viac vstavaných a vzdialených ovládačov, sieťový radič umožňuje používateľom pripojiť konkrétny ovládač k danej sieti.

Vodič: Vlastní sieť a je zodpovedný za správu siete účasťou viacerých ovládačov, ktoré uspokoja rôzne prípady použitia a scenáre nasadenia.

Sieť: Poskytuje pripojenie medzi skupinou koncových bodov, ktoré patria do rovnakej siete a izolujú sa od ostatných. Takže vždy, keď sa vytvorí alebo aktualizuje sieť, bude o udalosti informovaný príslušný ovládač.

Koncový bod: Poskytuje pripojenie pre služby vystavené kontajnerom v sieti s ďalšími službami poskytovanými inými kontajnermi v sieti. Koncový bod predstavuje službu a nie nevyhnutne konkrétny kontajner. Koncový bod má globálny rozsah aj v rámci klastra.

Pieskovisko: Vytvorené, keď používatelia požadujú vytvorenie koncového bodu v sieti. Sandbox môže mať viac koncových bodov pripojených k rôznym sieťam predstavujúcim konfiguráciu siete kontajnera, ako je IP-adresa, MAC-adresa, trasy, DNS.

To bolo teda 5 hlavných objektov CNM.

Teraz vám poviem rôzne sieťové ovládače zapojené do siete Docker.

Chcete posunúť DevOps Learning na vyššiu úroveň?

Sieťové ovládače

Existuje hlavne 5 sieťových ovládačov: Bridge, Host, None, Overlay, Macvlan

Most: Prepojovacia sieť je predvolená súkromná interná sieť vytvorená ukotviteľným počítačom na hostiteľovi. Všetky kontajnery teda dostávajú internú adresu IP a tieto kontajnery majú prístup k sebe navzájom pomocou tejto internej adresy IP. Siete Bridge sa zvyčajne používajú, keď vaše aplikácie bežia v samostatných kontajneroch, ktoré potrebujú komunikáciu.

príklady tried a objektov pythonu

Hostiteľ : Tento ovládač odstraňuje izoláciu siete medzi hostiteľom ukotviteľného panela a kontajnermi ukotviteľného panelu, aby mohol priamo používať sieť hostiteľa. Takže s týmto nebudete môcť spustiť viac webových kontajnerov na rovnakom hostiteľovi, na rovnakom porte, pretože port je teraz spoločný pre všetky kontajnery v hostiteľskej sieti.

Žiadne : V tomto druhu siete nie sú kontajnery pripojené k žiadnej sieti a nemajú prístup k externej sieti alebo iným kontajnerom. Táto sieť sa teda používa, keďchcete úplne zakázať sieťový zásobník na kontajneri avytvorte iba zariadenie so spätnou väzbou.

Prekrytie : Vytvorí internú súkromnú sieť, ktorá sa rozprestiera cez všetky uzly zúčastňujúce sa na rojovom klastri. Takže siete Overlay uľahčujú komunikáciu medzi rojovou službou a samostatným kontajnerom alebo medzi dvoma samostatnými kontajnermi na rôznych Docker Daemons.

Macvlan: Umožňuje vám priradiť MAC adresu kontajneru, aby sa javil ako fyzické zariadenie vo vašej sieti. Potom démon Docker smeruje prenosy do kontajnerov podľa ich adries MAC. Ovládač Macvlan je najlepšou voľbou, keď sa od vás očakáva priame pripojenie k fyzickej sieti, a nie smerovanie cez sieťový zásobník hostiteľa Docker.

Dobre, tak to bola celá teória potrebná na pochopenie Docker Networking. Teraz mi dovoľte pokračovať a ukážem vám prakticky, ako sa vytvárajú siete a kontajnery navzájom komunikujú.

Hands-On

Takže s predpokladom, že ste si všetci nainštalovali Docker na svoje systémy, musím predstaviť scenár.

Predpokladajme, že chcete uložiť názov a ID kurzov, pre ktoré budete potrebovať webovú aplikáciu. V zásade potrebujete jeden kontajner pre webovú aplikáciu a jeden ďalší kontajner ako MySQL pre backend, ktorý by mal byť prepojený s kontajnerom webových aplikácií.

Čo tak uskutočniť uvedený príklad v praxi.

Príslušné kroky:

  • Inicializujte Docker Swarm a vytvorte klaster Swarm.
  • Vytvorte prekrývaciu sieť
  • Vytvorte služby pre webové aplikácie aj pre MySQL
  • Pripojte aplikácie cez sieť

Začnime!

Krok 1: Inicializujte Docker Swarm na stroji.

docker swarm init --advertise-addr 192.168.56.101

Príznak –advertise-addr nakonfiguruje uzol správcu na zverejnenie jeho adresy ako 192.168.56.101. Ostatné uzly v roji musia mať prístup k správcovi na adrese IP.

Krok 2: Teraz, ak sa chcete pripojiť k tomuto uzlu správcu k pracovnému uzlu, skopírujte odkaz, ktorý získate pri inicializácii roja na pracovnom uzle.
Krok 3: Vytvorte prekrývaciu sieť.

docker network create -d overlay myoverlaynetwork

Kde myoverlay je názov siete a -d umožňuje Docker Daemon bežať na pozadí.

Krok 4.1: Vytvorte službu webapp1 a použite sieť, ktorú ste vytvorili, na nasadenie tejto služby cez rojový klaster.

docker service create --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

Kde -pje na presmerovanie portov,hsharje názov účtu v Docker Hub a webapp je názov webovej aplikácie, ktorá sa už v Docker Hub nachádza.

Krok 4.2: Teraz skontrolujte, či je služba vytvorená alebo nie.

docker service ls

Krok 5.1: Teraz vytvorte službu MySQL a použite sieť, ktorú ste vytvorili, na nasadenie služby cez rojový klaster.

docker service create --name mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Krok 5.2: Teraz skontrolujte, či je služba vytvorená alebo nie.

docker service ls

Krok 6.1: Potom skontrolujte, ktorý kontajner je spustený na vašom hlavnom uzle, a choďte do kontajnera hshar / webapp.

docker ps

Krok 6.2: Vidíte teda, že v uzle správcu je iba služba webapp. Takže choďte do kontajnera webapp.

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

java dátumový reťazec k dnešnému dňu

Príkaz docker ps vypíše oba vaše kontajnery s ich príslušným ID kontajnera. Druhý príkaz umožní tento kontajner v interaktívnom režime.

Krok 7: Teraz zmeňte názov servera $ z localhost na mysql a heslo $ z „“ na „edureka“ a tiež zmeňte všetky požadované údaje v databáze a uložte súbor index.php pomocou klávesovej skratky Ctrl + x a potom y uložte a stlačte kláves Enter.

Krok 8: Teraz choďte do kontajnera mysql, ktorý beží na inom uzle.

docker exec -it container_id bash

Krok 9: Akonáhle vojdete do kontajnera mysql, zadajte nižšie uvedené príkazy, aby ste mohli používať databázu v MySQL.

Krok 9.1: Získajte prístup na používanie kontajnera mysql.

mysql -u root -pedureka

Kde -u predstavuje používateľa a -p je heslo vášho zariadenia.

Krok 9.2: Vytvorte databázu v mysql, ktorá sa použije na získanie údajov z webapp1.

VYTVORIŤ DATABÁZU HandsOn

Krok 9.3: Použite vytvorenú databázu.

POUŽÍVAJTE HandsOn

Krok 9.4: V tejto databáze vytvorte tabuľku, ktorá sa použije na získanie údajov z webapp1.

CREATE TABLE kurz_podrobnosti (názov_kurzu VARCHAR (10), identifikátor kurzu VARCHAR (11))

Krok 9.5: Teraz pomocou príkazu ukončite MySQL a tiež kontajner východ .

Krok 10: Prejdite do prehľadávača a zadajte adresu ako localhost: 8001 / index.php . Týmto sa otvorí vaša webová aplikácia. Teraz zadajte podrobnosti o kurzoch a kliknite na Odoslať dopyt .

Krok 11: Akonáhle kliknete na Submit Query, choďte do uzla, v ktorom je spustená vaša služba MySQL, a potom choďte dovnútra kontajnera.

docker exec -it container_id bash mysql -u root -pedureka POUŽIŤ tabuľky HandsOn SHOW vyberte * z course_details

Zobrazí sa výstup zo všetkých kurzov, ktoré ste vyplnili.

Týmto končím svoj blog Docker Networking. Dúfam, že sa vám tento príspevok páčil. Môžete skontrolovať iné blogy v seriáli, ktorý sa zaoberá základmi Dockera.

Ak sa vám zdá tento blog Docker Container relevantný, pozrite si stránku autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 450 000 spokojných študentov rozšírených po celom svete. Certifikačný vzdelávací kurz Edureka DevOps pomáha študentom získať odborné znalosti v rôznych procesoch a nástrojoch DevOps, ako sú Puppet, Jenkins, Docker, Nagios, Ansible a GIT na automatizáciu viacerých krokov v SDLC.

Hľadáte certifikáciu v DevOps?

Máte na mňa otázku? Uveďte to prosím v sekcii komentárov a ozvem sa.