Docker Networking - raziščite, kako zabojniki komunicirajo med seboj



Naučite se vse o Dockerjevih zmožnostih mreženja z razumevanjem modela kontejnerskega omrežja in njegovega izvajanja s praktičnimi navodili.

V današnjem svetu se podjetja navdušujejo nad kontejnerizacijo, kar zahteva močne mrežne spretnosti za pravilno konfiguracijo arhitekture vsebnika, zato to predstavlja koncept Docker Networking.

V tem blogu o Docker Networkingu boste prebrali naslednje teme:





Kaj je Docker?

Če želite razumeti Docker, morate vedeti o zgodovini, kako so bile aplikacije razmeščene prej, in potem, kako se aplikacije zdaj uporabljajo s kontejnerji.

Uvajanje aplikacij po starem in novem - Docker Networking - Edureka



Kot lahko vidite na zgornjem diagramu, so imeli stari gostitelji aplikacije na gostitelju.Torej, n število aplikacij deli knjižnice, ki so prisotne v tem operacijskem sistemu.Toda s kontejnerizacijo bo imel operacijski sistem jedro, ki bo edino, kar bo skupno vsem aplikacijam.Torej, aplikacije ne morejo dostopati do knjižnic drug drugega.

Torej, Docker poenostavljeno rečeno je odprta platforma za razvoj, pošiljanje in zagon aplikacij, ki uporabniku omogoča ločevanje aplikacij od infrastrukture s pomočjo posode za hitro dostavo programske opreme.

Torej, kako ti zabojniki komunicirajo med seboj v različnih situacijah?



No, to prihaja skozi Docker Networking.

Docker Networking

Preden se poglobim v Docker Networking, naj vam predstavim potek dela Dockerja.

Kot lahko vidite na zgornjem diagramu. Razvijalec v enostavno zapisljivo datoteko Docker napiše kodo, ki določa zahteve aplikacije ali odvisnosti, ta datoteka Docker pa ustvari slike Docker. Na tej sliki so torej prisotne kakršne koli odvisnosti, potrebne za določeno aplikacijo.

Zdaj Docker Containers niso nič drugega kot izvajalni primerek Docker Image. Te slike se naložijo v Docker Hub (skladišče Git za slike Docker), ki vsebuje javna / zasebna skladišča.

Torej lahko iz javnih skladišč potegnete tudi svojo sliko in naložite svoje slike v Docker Hub. Nato bodo iz Docker Hub-a različne ekipe, kot so ekipe za zagotavljanje kakovosti ali produkcijo, potegnile to sliko in pripravile lastne posode. Ti posamezni vsebniki med seboj komunicirajo prek omrežja, da izvedejo zahtevana dejanja, in to ni nič drugega kot Docker Networking.

Tako lahko Docker Networking definirate kot komunikacijski prehod, skozi katerega vsi izolirani vsebniki komunicirajo med seboj v različnih situacijah, da izvedejo zahtevana dejanja.

Kaj so po vašem mnenju cilji Docker Networkinga?

Cilji Dockerjevega mreženja

Prilagodljivost - Docker omogoča prilagodljivost, saj omogoča poljubno število aplikacij na različnih platformah, da komunicirajo med seboj.

Med platformo - Docker je mogoče enostavno uporabiti v različnih platformah, ki s pomočjo Docker Swarm Clusters delujejo na različnih strežnikih.

Razširljivost - Docker je popolnoma porazdeljeno omrežje, ki aplikacijam omogoča individualno rast in obseg, hkrati pa zagotavlja zmogljivost.

Decentralizirano - Docker uporablja decentralizirano omrežje, ki omogoča razširjanje in dostopnost aplikacij. V primeru, da vsebnik ali gostitelj nenadoma izgine iz vašega področja virov, lahko prikličete dodaten vir ali prenesete na storitve, ki so še vedno na voljo.

Uporabniku prijazno - Docker omogoča enostavno avtomatizacijo uvajanja storitev, tako da so enostavne za uporabo v vsakdanjem življenju.

Podpora - Docker ponuja gotove podpore. Zaradi uporabe Docker Enterprise Edition in vse funkcije je zelo enostavno in enostavno, je Docker platforma zelo enostavna za uporabo.

Če želite omogočiti zgornje cilje, potrebujete nekaj, kar se imenuje model kontejnerske mreže.

Želite raziskati različne faze DevOps?

Model kontejnerskega omrežja (CNM)

Preden vam povem, kaj točno je model kontejnerske mreže, naj vas seznanim z Libnetwork, ki je potreben, preden razumete CNM.

Libnetwork je odprtokodna knjižnica Docker, ki izvaja vse ključne koncepte, ki sestavljajo CNM.

Torej, Model kontejnerskega omrežja (CNM) standardizira korake, potrebne za mreženje zabojnikov, ki uporabljajo več omrežnih gonilnikov. CNM za shranjevanje omrežne konfiguracije zahteva porazdeljeno shrambo ključ-vrednost, kot je konzola.

CNM ima vmesnike za vtičnike IPAM in omrežne vtičnike.

API-ji vtičnikov IPAM se uporabljajo za ustvarjanje / brisanje področij naslovov in dodeljevanje / odstranjevanje naslovov IP-vsebnikov, medtem ko API-ji vtičnikov omrežja uporabljajo za ustvarjanje / brisanje omrežij in dodajanje / odstranjevanje vsebnikov iz omrežij.

CNM je v glavnem gradil na petih objektih: krmilnik omrežja, gonilnik, omrežje, končna točka in peskovnik.

Objekti mrežnega vsebnika

Omrežni krmilnik: Ponuja vstopno točko v Libnetwork, ki razkriva preproste API-je za Docker Engine za dodeljevanje in upravljanje omrežij. Ker Libnetwork podpira več vgrajenih in oddaljenih gonilnikov, Network Controller uporabnikom omogoča, da določen gonilnik priključijo na določeno omrežje.

Voznik: Je lastnik omrežja in je odgovoren za upravljanje omrežja, tako da sodeluje več gonilnikov, ki izpolnjujejo različne primere uporabe in scenarije uvajanja.

Omrežje: Omogoča povezljivost med skupino končnih točk, ki pripadajo istemu omrežju in so izolirane od ostalih. Torej, kadar koli se omrežje ustvari ali posodobi, bo ustrezen voznik obveščen o dogodku.

Končna točka: Omogoča povezljivost storitev, ki jih v omrežju izpostavi vsebnik, z drugimi storitvami, ki jih zagotavljajo drugi vsebniki v omrežju. Končna točka predstavlja storitev in ni nujno določen vsebnik, končna točka ima tudi globalni obseg znotraj gruče.

Peskovnik: Ustvarjeno, ko uporabniki zahtevajo ustvarjanje končne točke v omrežju. Peskovnik ima lahko več končnih točk, povezanih z različnimi omrežji, ki predstavljajo omrežno konfiguracijo vsebnika, kot so naslov IP, naslov MAC, poti, DNS.

To je bilo torej 5 glavnih predmetov CNM.

kako narediti moč v pythonu

Zdaj pa naj vam povem različne omrežne gonilnike, ki so vključeni v omrežje Docker.

Bi radi DevOps učili na višjo raven?

Omrežni gonilniki

V glavnem je 5 omrežnih gonilnikov: Bridge, Host, None, Overlay, Macvlan

Most: Premostitveno omrežje je zasebno privzeto notranje omrežje, ki ga ustvari docker na gostitelju. Torej, vsi vsebniki dobijo notranji naslov IP in ti vsebniki lahko dostopajo drug do drugega s pomočjo tega notranjega IP-ja. Omrežja Bridge se običajno uporabljajo, kadar se vaše aplikacije izvajajo v samostojnih vsebnikih, ki morajo komunicirati.

Voditelj : Ta gonilnik odstrani omrežno izolacijo med gostiteljskim priklopnikom in zabojniki za priklopno postajo za neposredno uporabo gostiteljskega omrežja. Tako s tem ne boste mogli zagnati več spletnih vsebnikov na istem gostitelju na istih vratih, kot so vrata zdaj skupna vsem vsebnikom v gostiteljskem omrežju.

Nobenega : V tej vrsti omrežja vsebniki niso priključeni na nobeno omrežje in nimajo dostopa do zunanjega omrežja ali drugih vsebnikov. Torej, to omrežje se uporablja, kadarželite popolnoma onemogočiti mrežni sklad na vsebniku in,ustvarite samo povratno napravo.

Prekrivanje : Ustvari notranje zasebno omrežje, ki se razteza čez vsa vozlišča, ki sodelujejo v grozdni gruči. Prekrivna omrežja torej olajšajo komunikacijo med storitvijo roja in samostojnim vsebnikom ali med dvema samostojnima vsebnikoma na različnih Docker Daemonih.

Macvlan: Omogoča, da vsebniku dodelite naslov MAC, tako da je prikazan kot fizična naprava v vašem omrežju. Nato demon Docker usmerja promet do zabojnikov po njihovih naslovih MAC. Gonilnik Macvlan je najboljša izbira, kadar se od vas pričakuje, da ste neposredno povezani s fizičnim omrežjem in ne usmerjeni skozi omrežni sklad gostitelja Dockerja.

V redu, to je bila vsa teorija, potrebna za razumevanje Dockerjevega omrežja. Zdaj pa naj nadaljujem in vam praktično pokažem, kako se ustvarjajo omrežja in kako zabojniki komunicirajo med seboj.

Hands-On

Torej, ob predpostavki, da ste vsi namestili Docker v svoje sisteme, imam scenarij za predstavitev.

Recimo, da želite shraniti ime in ID tečajev, za kar potrebujete spletno aplikacijo. V bistvu potrebujete en vsebnik za spletno aplikacijo in še en vsebnik kot MySQL za zaledje, da mora biti vsebnik MySQL povezan s vsebnikom spletne aplikacije.

Kako pa je, da zgoraj navedeni primer izvedem praktično.

Vključeni koraki:

  • Inicializirajte Docker Swarm, da oblikujete skupino Swarm.
  • Ustvarite prekrivno omrežje
  • Ustvarite storitve za spletno aplikacijo in MySQL
  • Povežite aplikacije prek omrežja

Začnimo!

Korak 1: Inicializirajte Docker Swarm na napravi.

docker roj init --advertise-addr 192.168.56.101

Oznaka –advertise-addr konfigurira vozlišče upravitelja, da objavi svoj naslov kot 192.168.56.101. Druga vozlišča v roju morajo imeti dostop do upravitelja na naslovu IP.

2. korak: Če želite temu upravljalnemu vozlišču pridružiti delovno vozlišče, kopirajte povezavo, ki jo dobite, ko inicializirate roj na delovnem vozlišču.
3. korak: Ustvarite prekrivno omrežje.

docker network create -d overlay myoverlaynetwork

Kjer je myoverlay ime omrežja in -d omogoča Docker Daemonu, da deluje v ozadju.

Korak 4.1: Ustvarite storitev webapp1 in uporabite omrežje, ki ste ga ustvarili, za uvajanje te storitve v grozd roja.

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

Kje -pje za posredovanje vrat,hsharje ime računa na Docker Hub, webapp pa ime spletne aplikacije, ki je že prisotna na Docker Hub.

Korak 4.2: Zdaj preverite, ali je storitev ustvarjena ali ne.

docker servis ls

Korak 5.1: Zdaj ustvarite storitev MySQL in uporabite omrežje, ki ste ga ustvarili, za razmestitev storitve prek grozdne jate.

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


Korak 5.2: Zdaj preverite, ali je storitev ustvarjena ali ne.

docker servis ls

Korak 6.1: Po tem preverite, kateri vsebnik se izvaja na vašem glavnem vozlišču in pojdite v vsebnik hshar / webapp.

docker ps

Korak 6.2: Tako lahko vidite, da je na vozlišču upravitelja samo storitev webapp. Torej, pojdite v vsebnik za splet.

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

Ukaz docker ps bo prikazal oba vsebnika z ustreznim ID-jem vsebnika. Drugi ukaz bo omogočil to posodo v interaktivnem načinu.

7. korak: Zdaj spremenite ime strežnika $ iz localhost v mysql in $ geslo iz '' 'v' edureka ', prav tako pa spremenite vse potrebne podatke o zbirki podatkov in shranite datoteko index.php s pomočjo bližnjične tipke Ctrl + x in po tem y, da shranite, in pritisnite enter.

8. korak: Zdaj pojdite v vsebnik mysql, ki se izvaja na drugem vozlišču.

docker exec -it container_id bash

9. korak: Ko vstopite v vsebnik mysql, vnesite spodnje ukaze za uporabo baze podatkov v MySQL.

Korak 9.1: Pridobite dostop do uporabe vsebnika mysql.

mysql -u koren -pedureka

Kjer -u predstavlja uporabnika, -p pa je geslo vaše naprave.

Korak 9.2: V mysqlu ustvarite bazo podatkov, ki bo uporabljena za pridobivanje podatkov iz webapp1.

USTVARI BAZO PODATKOV HandsOn

Korak 9.3: Uporabite ustvarjeno bazo podatkov.

UPORABI HandsOn

Korak 9.4: V tej bazi podatkov ustvarite tabelo, ki bo uporabljena za pridobivanje podatkov iz webapp1.

USTVARI TABELO podrobnosti_tečaja (ime_tečaja VARCHAR (10), id_tečaja VARCHAR (11))

Korak 9.5: Zdaj pa z ukazom zapustite tudi MySQL in vsebnik izhod .

10. korak: Pojdite v brskalnik in naslov vnesite kot localhost: 8001 / index.php . To bo odprlo vašo spletno aplikacijo. Zdaj vnesite podrobnosti o tečajih in kliknite na Pošlji poizvedbo .

11. korak: Ko kliknete Pošlji poizvedbo, pojdite na vozlišče, v katerem se izvaja vaša storitev MySQL, in nato pojdite v vsebnik.

docker exec -it container_id bash mysql -u root -pedureka UPORABA HandsOn SHOW tabele izberite * med course_details

To vam bo pokazalo rezultate vseh tečajev, o katerih ste izpolnili podrobnosti.

Tu končujem svoj spletni dnevnik Docker Networking. Upam, da ste uživali v tej objavi. Lahko preverite drugi blogi tudi v seriji, ki obravnava osnove Dockerja.

Če se vam zdi ta spletni dnevnik Docker Container ustrezen, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 450.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka DevOps Certification Training pomaga učencem pridobiti znanje o različnih postopkih in orodjih DevOps, kot so Lutka, Jenkins, Docker, Nagios, Ansible in GIT za avtomatizacijo več korakov v SDLC.

Iščete certifikat v DevOps?

Imate vprašanje zame? Prosimo, omenite to v oddelku za komentarje in se vam oglasim.