Docker umrežavanje - istražite kako kontejneri međusobno komuniciraju



Saznajte sve o mogućnostima Dockerovog umrežavanja s razumijevanjem modela kontejnerske mreže i njegove primjene pomoću praktičnog rada.

U današnjem svijetu poduzeća su postala zainteresirana za kontejnerizaciju koja zahtijeva jake mrežne vještine za pravilno konfiguriranje arhitekture kontejnera, što stoga uvodi koncept Docker Networkinga.

U ovom blogu na Docker Networkingu proći ćete kroz sljedeće teme:





Što je Docker?

Da biste razumjeli Docker, morate znati o povijesti kako su aplikacije prije bile raspoređivane, a zatim kako se aplikacije sada raspoređuju pomoću spremnika.

razlika između nadjačavanja i preopterećenja

Razmještanje aplikacija na stari i novi način - Docker umrežavanje - Edureka



Kao što možete vidjeti na gornjem dijagramu, stari način imao je aplikacije na hostu.Dakle, n broj aplikacija dijeli knjižnice prisutne u tom operativnom sustavu.Ali, s kontejnerizacijom, operativni sustav imat će jezgru koja će biti jedina stvar koja će biti zajednička svim aplikacijama.Dakle, aplikacije ne mogu međusobno pristupiti knjižnicama.

Tako, Lučki radnik jednostavnim riječima, otvorena je platforma za razvoj, isporuku i pokretanje aplikacija, koja omogućava korisniku da odvoji aplikacije od infrastrukture uz pomoć kontejneri za brzu isporuku softvera.

Pa, kako ti spremnici međusobno komuniciraju u raznim situacijama?



Pa, to dolazi kroz Docker Networking.

Docker umrežavanje

Prije nego što zaronim u Docker Networking, dopusti mi da ti pokažem tijek rada Dockera.

Kao što možete vidjeti na gornjem dijagramu. Programer napiše kod koji propisuje zahtjeve aplikacije ili ovisnosti u datoteku Docker koja se lako piše, a ova datoteka Docker daje Docker slike. Dakle, kakve god ovisnosti su potrebne za određenu aplikaciju, prisutne su na ovoj slici.

Sad, Docker-ovi spremnici nisu ništa drugo nego instanca Docker-a za vrijeme izvođenja. Te se slike prenose na Docker Hub (Git spremište za Docker slike) koje sadrži javna / privatna spremišta.

Dakle, iz javnih spremišta možete povući i svoju sliku, a svoje slike možete prenijeti na Docker Hub. Zatim će iz Docker Hub-a razni timovi poput timova za osiguranje kvalitete ili proizvodnje izvući tu sliku i pripremiti vlastite spremnike. Ti pojedinačni spremnici međusobno komuniciraju putem mreže radi izvođenja potrebnih radnji, a to je ništa drugo nego Docker Networking.

Dakle, Docker Networking možete definirati kao komunikacijski prolaz kroz koji svi izolirani spremnici međusobno komuniciraju u raznim situacijama radi izvođenja potrebnih radnji.

Koji su po vama ciljevi Docker Networkinga?

Ciljevi Docker umrežavanja

Fleksibilnost - Docker pruža fleksibilnost omogućujući međusobnu komunikaciju bilo kojeg broja aplikacija na različitim platformama.

Više platformi - Docker se lako može koristiti na više platformi koja radi na različitim poslužiteljima uz pomoć Docker Swarm Clusters.

Skalabilnost - Docker je potpuno distribuirana mreža koja omogućuje pojedinačnom rastu i skaliranju aplikacija, istovremeno osiguravajući performanse.

Decentralizirano - Docker koristi decentraliziranu mrežu koja omogućava širenje i visoko dostupnost aplikacija. U slučaju da iz vašeg spremišta resursa iznenada nedostaje spremnik ili host, možete otvoriti dodatni resurs ili preći na usluge koje su još uvijek dostupne.

Korisnik - prijateljski - Docker olakšava automatizaciju uvođenja usluga, čineći ih jednostavnim za upotrebu u svakodnevnom životu.

Podrška - Docker nudi gotove potpore. Dakle, sposobnost korištenja Docker Enterprise Edition i dobivanja svih funkcija vrlo lako i jednostavno, čini Docker platformu vrlo jednostavnom za upotrebu.

Da biste omogućili gore navedene ciljeve, trebate nešto što se naziva Model kontejnerske mreže.

Želite istražiti razne DevOps faze?

Model mreže kontejnera (CNM)

Prije nego što vam kažem što je točno model kontejnerske mreže, dopustite mi da vas ukratko informiram o Libnetwork-u koji je potreban prije nego što shvatite CNM.

Libnetwork je biblioteka Docker s otvorenim kodom koja implementira sve ključne koncepte koji čine CNM.

Tako, Model mreže kontejnera (CNM) standardizira korake potrebne za pružanje umrežavanja spremnika koji koriste više mrežnih upravljačkih programa. CNM zahtijeva distribuirano spremište ključ / vrijednost poput konzole za spremanje mrežne konfiguracije.

CNM ima sučelja za IPAM dodatke i mrežne dodatke.

API-ji dodataka IPAM koriste se za stvaranje / brisanje spremišta adresa i dodjelu / uklanjanje IP adresa spremnika, dok se API-ji mrežnih dodataka koriste za stvaranje / brisanje mreža i dodavanje / uklanjanje spremnika iz mreža.

CNM je uglavnom gradio na 5 objekata: mrežni kontroler, upravljački program, mreža, krajnja točka i pješčanik.

Objekti modela kontejnerske mreže

Mrežni kontroler: Pruža ulaznu točku u Libnetwork koja izlaže jednostavne API-je za Docker Engine za dodjelu i upravljanje mrežama. Budući da Libnetwork podržava više ugrađenih i udaljenih upravljačkih programa, Network Controller omogućava korisnicima da određeni upravljački program prikače na datu mrežu.

Vozač: Vlasnik je mreže i odgovoran je za upravljanje mrežom tako što sudjeluje više pokretača koji zadovoljavaju različite slučajeve upotrebe i scenarije implementacije.

Mreža: Pruža povezanost između grupe krajnjih točaka koje pripadaju istoj mreži i izoliraju se od ostalih. Dakle, kad god se mreža stvori ili ažurira, odgovarajući upravljački program bit će obaviješten o događaju.

Krajnja točka: Omogućuje povezivanje usluga izloženih spremnikom u mreži s ostalim uslugama koje pružaju drugi spremnici u mreži. Krajnja točka predstavlja uslugu, a ne nužno određeni spremnik, krajnja točka također ima globalni opseg unutar klastera.

Pješčanik: Stvoreno kada korisnici zatraže stvaranje krajnje točke na mreži. Sandbox može imati više krajnjih točaka povezanih s različitim mrežama koje predstavljaju mrežnu konfiguraciju spremnika, kao što su IP adresa, MAC adresa, rute, DNS.

Dakle, to je bilo 5 glavnih predmeta CNM-a.

Sada ću vam reći razne mrežne pokretačke programe koji su uključeni u Docker umrežavanje.

Želite li DevOps učenje podići na sljedeću razinu?

Mrežni upravljački programi

Uglavnom postoji 5 mrežnih upravljačkih programa: Bridge, Host, None, Overlay, Macvlan

Most: Mrežna mreža je privatna zadana interna mreža koju je stvorio docker na hostu. Dakle, svi spremnici dobivaju internu IP adresu i ti spremnici mogu pristupiti jedni drugima, koristeći tu internu IP adresu. Bridge mreže obično se koriste kada se vaše aplikacije izvode u samostalnim spremnicima koji trebaju komunikaciju.

Domaćin : Ovaj pokretački program uklanja mrežnu izolaciju između hosta dockera i spremnika dockera za izravno korištenje hostove mreže. Dakle, s ovim nećete moći pokretati više web-spremnika na istom hostu, na istom portu kao što je port sada zajednički svim spremnicima u mreži domaćina.

Nijedna : U ovoj vrsti mreže spremnici nisu priključeni ni na jednu mrežu i nemaju pristup vanjskoj mreži ili drugim spremnicima. Dakle, ova se mreža koristi kadaželite potpuno onemogućiti mrežni snop na spremniku i,izradite samo uređaj s povratnom petljom.

Prekrivanje : Stvara unutarnju privatnu mrežu koja se proteže kroz sve čvorove koji sudjeluju u grozdu rojeva. Dakle, Overlay mreže olakšavaju komunikaciju između usluge rojenja i samostalnog spremnika ili između dva samostalna spremnika na različitim Docker demonima.

Macvlan: Omogućuje vam da dodijelite MAC adresu spremniku, čineći ga prikazanim kao fizički uređaj na vašoj mreži. Zatim, Docker demon usmjerava promet prema spremnicima prema njihovim MAC adresama. Upravljački program za Macvlan najbolji je izbor kada se očekuje da ćete biti izravno povezani s fizičkom mrežom, a ne usmjereni kroz mrežni stog domaćina Dockera.

U redu, to je bila sva teorija potrebna za razumijevanje Docker umrežavanja. Dopustite mi da vam pokažem kako se stvaraju mreže i kako kontejneri međusobno komuniciraju.

Ruke na

Dakle, uz pretpostavku da ste svi instalirali Docker na svoje sustave, imam scenarij za prezentaciju.

Pretpostavimo da želite pohraniti naziv i ID tečaja, za što će vam trebati web aplikacija. U osnovi, potreban vam je jedan spremnik za web aplikaciju, a potreban vam je još jedan spremnik kao MySQL za pozadinu, taj MySQL spremnik trebao bi biti povezan sa spremnikom web aplikacije.

baciti dvostruko za int u javi

Kako bi bilo da gore navedeni primjer izvršim praktično.

Uključeni koraci:

  • Inicijalizirajte Docker Swarm da biste formirali Swarm skupinu.
  • Stvorite preklapajuću mrežu
  • Stvorite usluge za web aplikacije i MySQL
  • Povežite programe putem mreže

Započnimo!

Korak 1: Inicijalizirajte Docker Swarm na stroju.

docker roj init --advertise-addr 192.168.56.101

Oznaka –advertise-addr konfigurira čvor upravitelja da objavi njegovu adresu kao 192.168.56.101. Ostali čvorovi u roju moraju moći pristupiti upravitelju na IP adresi.

Korak 2: Sada, ako želite pridružiti ovaj čvor upravitelja radnom čvoru, kopirajte vezu koju dobijete kada inicijalizirate roj na radnom čvoru.
Korak 3: Stvorite preklapajuću mrežu.

docker mreža create -d overlay myoverlaynetwork

Gdje je myoverlay naziv mreže, a -d omogućuje Docker Daemonu da radi u pozadini.

Korak 4.1: Stvorite uslugu webapp1 i upotrijebite mrežu koju ste stvorili za postavljanje ove usluge preko grozda rojeva.

docker usluga create --name webapp1 -d --net myoverlaynetwork -p 8001: 80 hshar / webapp

Gdje -pje za prosljeđivanje luka,hsharje naziv računa na Docker Hubu, a webapp je naziv web aplikacije koja je već prisutna na Docker Hubu.

Korak 4.2: Sada provjerite je li usluga stvorena ili nije.

docker usluga ls

Korak 5.1: Sada stvorite uslugu MySQL i upotrijebite mrežu koju ste kreirali za postavljanje usluge preko gomile rojeva.

docker usluga create --name mysql -d --net myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Korak 5.2: Sada provjerite je li usluga stvorena ili nije.

docker usluga ls

Korak 6.1: Nakon toga provjerite koji se spremnik izvodi na vašem glavnom čvoru i uđite u spremnik hshar / webapp.

docker ps

Korak 6.2: Dakle, možete vidjeti da je samo usluga webapp na čvoru upravitelja. Dakle, uđite u spremnik za webapp.

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

Naredba docker ps popisat će oba spremnika s pripadajućim ID-jem spremnika. Druga naredba omogućit će taj spremnik u interaktivnom načinu.

Korak 7: Sada promijenite $ servername iz localhost u mysql i $ password iz '' 'u' edureka ', a također promijenite sve potrebne podatke o bazi podataka i spremite datoteku index.php pomoću tipkovne prečice Ctrl + x i nakon toga y za spremanje i pritisnite enter.

Korak 8: Sada idite u mysql spremnik koji je pokrenut na drugom čvoru.

docker exec -it container_id bash

9. korak: Jednom kada uđete u mysql spremnik, unesite naredbe u nastavku da biste koristili bazu podataka u MySQL.

Korak 9.1: Dobiti pristup korištenju mysql spremnika.

mysql -u korijen -pedureka

Gdje -u predstavlja korisnika, a -p je lozinka vašeg računala.

Korak 9.2: Stvorite bazu podataka u mysqlu koja će se koristiti za dobivanje podataka s webapp1.

IZRADI BAZU PODATAKA HandsOn

Korak 9.3: Koristite stvorenu bazu podataka.

UPOTREBITE HandsOn

Korak 9.4: Stvorite tablicu u ovoj bazi podataka koja će se koristiti za dobivanje podataka s webapp1.

STVORI TABELU detalji_tečaja (naziv_tečaja VARCHAR (10), id_kursa VARCHAR (11))

Korak 9.5: Sada izađite iz MySQL-a i spremnika pomoću naredbe Izlaz .

10. korak: Idite na svoj preglednik i unesite adresu kao localhost: 8001 / index.php . Ovo će otvoriti vašu web aplikaciju. Sada unesite detalje o tečajevima i kliknite na Pošaljite upit .

11. korak: Nakon što kliknete na Pošalji upit, idite na čvor u kojem je pokrenuta vaša MySQL usluga, a zatim uđite u spremnik.

docker exec -it container_id bash mysql -u root -pedureka USE HandsOn SHOW tablice odaberite * iz predmeta_detalji

Ovo će vam pokazati rezultate svih tečajeva, o kojima ste popunili detalje.

Evo, završavam svoj Docker Networking blog. Nadam se da ste uživali u ovom postu. Mozes provjeriti drugi blogovi u seriji, koja se bavi osnovama Dockera.

Ako smatrate da je ovaj blog Docker Container relevantan, pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 450 000 zadovoljnih učenika raširenih širom svijeta. Edureka DevOps certifikacijski tečaj pomaže učenicima da steknu stručnost u različitim DevOps procesima i alatima kao što su Puppet, Jenkins, Docker, Nagios, Ansible i GIT za automatizaciju više koraka u SDLC-u.

Tražite li certifikat u DevOpsu?

Imaš pitanje za mene? Molimo vas da to spominjete u odjeljku za komentare i javiću vam se.