Dockeri võrguühendus - uurige, kuidas konteinerid omavahel suhtlevad



Lugege kõike Dockeri võrguvõimaluste kohta, mõistes konteinervõrgu mudelit ja rakendades seda käed-külge abil.

Tänapäeva maailmas on ettevõtted olnud huvitatud konteinerite kasutamisest, mis nõuab konteinerite arhitektuuri õigeks konfigureerimiseks tugevaid võrgustamisoskusi ja seeläbi tutvustatakse Dockeri võrgu kontseptsiooni.

Selles Docker Networkingu ajaveebis läbite järgmised teemad:





Mis on Docker?

Dockeri mõistmiseks peate teadma, kuidas rakendused varem juurutati ja kuidas rakendusi konteinerite abil juurutatakse.

Rakenduste juurutamine vanal ja uuel viisil - Dockeri võrguühendus - Edureka



Nagu ülaltoodud diagrammilt näha, olid vanamoodi hostil rakendused.Seega jagab selles operatsioonisüsteemis olevaid teeke n arv rakendusi.Kuid konteinerites on operatsioonisüsteemil kernel, mis on ainus asi, mis kõigi rakenduste vahel tavaline on.Seega ei pääse rakendused üksteise raamatukogudele juurde.

Niisiis, Docker lihtsustatult on avatud platvorm rakenduste arendamiseks, edastamiseks ja käitamiseks, mis võimaldab kasutajal eraldada rakendusi infrastruktuuridest konteinerid tarkvara kiireks tarnimiseks.

Niisiis, kuidas need konteinerid omavahel erinevates olukordades suhtlevad?



Noh, see tuleb läbi Dockeri võrgu.

Dockeri võrguühendus

Enne kui sukeldun Dockeri võrku, lubage mul näidata teile Dockeri töövoogu.

Nagu näete ülaltoodud skeemilt. Arendaja kirjutab koodi, mis sätestab rakenduse nõuded või sõltuvused hõlpsasti kirjutatavas Docker File'is ja see Docker File loob Docker Images. Niisiis, mis pildil on konkreetse rakenduse jaoks nõutavad sõltuvused, on sellel pildil olemas.

Nüüd pole Dockeri konteinerid muud kui Docker Image käitamisaeg. Need pildid laaditakse üles Docker Hubisse (Gocki hoidla Docker Imagesile), mis sisaldab avalikke / erahoidlaid.

Nii saate avalikest hoidlatest ka oma pildi tõmmata ja oma pildid üles laadida Docker Hubile. Seejärel tõmbavad Docker Hubist erinevad meeskonnad, näiteks kvaliteedi tagamise või tootmise meeskonnad, selle pildi ja valmistavad ette oma konteinerid. Need üksikud konteinerid suhtlevad omavahel vajalike toimingute tegemiseks võrgu kaudu ja see pole midagi muud kui Docker Networking.

Niisiis, saate määratleda Dockeri võrgu suhtluskäiguna, mille kaudu kõik eraldatud konteinerid nõuetekohaste toimingute tegemiseks erinevates olukordades omavahel suhtlevad.

Mis on teie arvates Docker Networkingu eesmärgid?

Dockeri võrgu loomise eesmärgid

Paindlikkus - Docker pakub paindlikkust, võimaldades suvalisel arvul rakendustel erinevatel platvormidel omavahel suhelda.

Platvormidevaheline - Dockerit saab hõlpsasti kasutada platvormidevahelisel platvormil, mis töötab Dockeri parveklastrite abil erinevates serverites.

Skaalautuvus - Docker on täielikult hajutatud võrk, mis võimaldab rakendustel jõudlust tagades individuaalselt kasvada ja laiendada.

Detsentraliseeritud - Docker kasutab detsentraliseeritud võrku, mis võimaldab rakendusi levitada ja ülimalt kättesaadavaks teha. Juhul, kui konteiner või hosti ootamatult teie ressursikogust puudu on, võite kas tuua juurde täiendava ressursi või üle minna veel saadaval olevatele teenustele.

Kasutajasõbralik - Docker muudab teenuste juurutamise automatiseerimise lihtsaks, muutes need igapäevases elus hõlpsaks kasutamiseks.

Toetus - Docker pakub väljapakutavaid tugesid. Niisiis, võimalus kasutada Docker Enterprise Editioni ja saada kõik funktsioonid väga lihtsaks ja arusaadavaks, muudab Dockeri platvormi kasutamise väga lihtsaks.

Eespool nimetatud eesmärkide lubamiseks vajate midagi, mida nimetatakse konteinervõrgu mudeliks.

Kas soovite uurida erinevaid DevOpsi etappe?

Konteinerite võrgumudel (CNM)

Enne kui ma ütlen teile, mis täpselt on konteinervõrgu mudel, lubage mul lühidalt tutvuda Libnetworkiga, mida on vaja enne, kui CNM-ist aru saate.

Libnetwork on avatud lähtekoodiga Dockeri teek, mis rakendab kõiki CNM-i moodustavaid põhimõisteid.

kuidas muuta duubel int-ks

Niisiis, Konteinerite võrgumudel (CNM) standardiseerib mitut võrgudraiverit kasutavate konteinerite võrgu loomiseks vajalikud toimingud. CNM nõuab võrgukonfiguratsiooni salvestamiseks hajutatud võtmeväärtuste salvestust nagu konsool.

CNM-il on liidesed IPAM-i ja võrgupistikprogrammide jaoks.

IPAM-i pistikprogrammi API-sid kasutatakse aadressikogumite loomiseks / kustutamiseks ja konteinerite IP-aadresside eraldamiseks / jaotamiseks, võrgupistikprogrammi API-sid kasutatakse võrkude loomiseks / kustutamiseks ja konteinerite lisamiseks / eemaldamiseks võrkudest.

CNM on üles ehitatud peamiselt 5 objektile: võrgukontroller, draiver, võrk, lõpp-punkt ja liivakast.

Konteinerite võrgu mudeli objektid

Võrgu kontroller: Pakub Libnetworksi sisenemispunkti, mis paljastab Docker Engine'i jaoks lihtsad API-d võrkude eraldamiseks ja haldamiseks. Kuna Libnetwork toetab mitut sisseehitatud ja kaugdraiverit, võimaldab võrgukontroller kasutajatel konkreetse draiveri antud võrku manustada.

Juht: Omab võrku ja vastutab võrgu haldamise eest, kui osaleb mitu draiverit, et rahuldada erinevaid kasutusjuhtumeid ja juurutamise stsenaariume.

Võrk: Tagab ühenduvuse lõpp-punktide rühma vahel, mis kuuluvad samasse võrku ja eralduvad ülejäänud osadest. Seega, kui võrk luuakse või seda värskendatakse, teavitatakse vastavat draiverit sündmusest.

Lõpp-punkt: Tagab ühenduvuse võrgus oleva konteineri poolt pakutavate teenuste ja muude võrgu muude konteinerite pakutavate teenuste jaoks. Lõpp-punkt tähistab teenust ja mitte tingimata konkreetset konteinerit. Lõpp-punktil on globaalne ulatus ka klastris.

Liivakast: Loodud siis, kui kasutajad taotlevad võrgus lõpp-punkti loomist. Liivakastil võib olla mitu lõpp-punkti, mis on ühendatud erinevatesse võrkudesse ja esindavad konteineri võrgukonfiguratsiooni, näiteks IP-aadress, MAC-aadress, marsruudid, DNS.

Need olid CNM-i viis peamist objekti.

Lubage mul nüüd teile öelda erinevad Dockeri võrguga seotud võrgudraiverid.

Kas soovite DevOpsi õppimise viia järgmisele tasemele?

Võrgu draiverid

Põhiliselt on 5 võrgudraiverit: Bridge, Host, Puudub, Overlay, Macvlan

Sild: Sildvõrk on privaatne vaikesisene sisevõrk, mille lõi hostil docker. Nii saavad kõik konteinerid sisemise IP-aadressi ja need konteinerid saavad selle sisemise IP-i abil üksteisele juurde pääseda. Sildvõrke kasutatakse tavaliselt siis, kui teie rakendused töötavad eraldiseisvates konteinerites, mis peavad suhtlema.

Peremees : See draiver eemaldab dokkimismasina ja dokkerikonteinerite vahelise võrguisolatsiooni, et otse kasutada hostivõrku. Nii et sellega ei saa te käitada mitut veebikonteinerit ühes hostis, samas sadamas, kus port on nüüd ühine kõigile hostivõrgu konteineritele.

Puudub : Sellises võrgus ei ole konteinerid ühegi võrgu külge kinnitatud ja neil puudub juurdepääs välisele võrgule ega muudele konteineritele. Niisiis, seda võrku kasutatakse siis, kuisoovite võrguühenduse korstna konteineris täielikult keelata jalooge ainult loopback-seade.

Ülekate : Loob sisemise privaatvõrgu, mis hõlmab kõiki sülemiklastris osalevaid sõlmi. Niisiis hõlbustavad ülekattevõrgud suhtlust sülemiteenuse ja eraldiseisva konteineri või kahe Docker Daemonil asuva kahe eraldiseisva konteineri vahel.

Macvlan: Võimaldab määrata konteinerile MAC-aadressi, muutes selle teie võrgus füüsilise seadmena. Seejärel suunab Dockeri deemon liikluse konteineritesse nende MAC-aadresside järgi. Macvlani draiver on parim valik, kui eeldatakse, et olete otse ühendatud füüsilise võrguga, mitte Dockeri hosti võrgupinu kaudu.

Hästi, nii et see oli kogu teooria, mida Dockeri võrgu mõistmiseks vaja oli. Las ma lähen edasi ja näitan teile praktiliselt, kuidas võrgud luuakse ja konteinerid omavahel suhtlevad.

Käed peal

Seega, eeldades, et kõik teie olete Dockeri oma süsteemidesse installinud, on mul stsenaarium, mida näidata.

Oletame, et soovite salvestada kursuste nime ja kursuste ID, mille jaoks vajate veebirakendust. Põhimõtteliselt vajate veebirakenduste jaoks ühte konteinerit ja taustaprogrammi jaoks vajate veel ühte konteinerit MySQL-iga, see MySQL-i konteiner peaks olema linkitud veebirakenduse konteineriga.

Kuidas oleks, kui täidaksin ülaltoodud näite praktiliselt.

Kaasatud etapid:

  • Alustage Docker Swarm, et moodustada Swarmi klaster.
  • Looge ülekattevõrk
  • Looge teenuseid nii veebirakenduste kui ka MySQL-i jaoks
  • Ühendage rakendused võrgu kaudu

Alustame!

Samm 1: Initsialiseeri Docker Swarm masinal.

dockeri sülem init - reklaam-addr 192.168.56.101

Lipp –advertise-addr konfigureerib haldurisõlme avaldama oma aadressi kujul 192.168.56.101. Teised sülemisõlmed peavad pääsema haldurile juurde IP-aadressil.

2. samm: Nüüd, kui soovite selle haldurisõlme liita töölisesõlmega, kopeerige link, mille saate, kui lähtestate töölisesõlme.
3. samm: Looge ülekattevõrk.

dockeri võrk looge -d ülekate minu pealevõrku

Kus myoverlay on võrgu nimi ja -d võimaldab Docker Daemonil taustal töötada.

4.1. Samm: Looge teenuse webapp1 ja kasutage loodud võrku selle teenuse juurutamiseks sülemiklastris.

dokkimisteenuse loomine - nimi webapp1 -d - võrk myoverlaynetwork -p 8001: 80 hshar / webapp

Kus -pon mõeldud sadama edastamiseks,hsharon Docker Hubis konto nimi ja webapp on Docker Hubis juba oleva veebirakenduse nimi.

Samm 4.2: Nüüd kontrollige, kas teenus on loodud või mitte.

dokkimisteenus ls

5.1. Samm: Nüüd looge teenus MySQL ja kasutage loodud võrku teenuse juurutamiseks sülemiklastris.

dockeri teenus create --name mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


5.2. Samm: Nüüd kontrollige, kas teenus on loodud või mitte.

dokkimisteenus ls

6.1. Samm: Pärast seda kontrollige, milline konteiner teie põhisõlmes töötab ja minge hshar / webapp konteinerisse.

dokkija ps

Samm 6.2: Nii näete, et haldurisõlmes on ainult veebirakendusteenus. Niisiis, minge veebirakenduse konteinerisse.

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

Docker ps-i käsk loetleb mõlemad teie konteinerid koos vastava konteineri ID-ga. Teine käsk lubab selle konteineri interaktiivses režiimis.

7. samm: Nüüd muutke $ servernimi localhost väärtuseks mysql ja $ parool väärtusest “” asendisse “edureka”. Samuti muutke kõik vajalikud andmebaasi üksikasjad ja salvestage fail index.php, kasutades kiirklahvi Ctrl + x ja pärast seda y salvestamiseks ja vajutage sisestusklahvi.

8. samm: Nüüd minge mysql konteinerisse, mis töötab teises sõlmes.

docker exec -it konteiner_id bash

9. samm: Kui olete sisenenud mysql-i konteinerisse, sisestage MySQL-is andmebaasi kasutamiseks järgmised käsud.

9.1 samm: Hankige juurdepääs mysqli konteineri kasutamiseks.

mysql -u juur -pedureka

Kus -u tähistab kasutajat ja -p on teie masina parool.

9.2 samm: Looge mysql-is andmebaas, mida kasutatakse andmete saamiseks veebirakendusest1.

LOO ANDMEBAAS HandsOn

9.3 samm: Kasutage loodud andmebaasi.

KASUTA HandsOn

9.4 samm: Looge selles andmebaasis tabel, mida kasutatakse andmete saamiseks veebirakendusest1.

LOE TABEL kursuse üksikasjad (kursuse_nimi VARCHAR (10), kursuse_ID VARCHAR (11))

9.5. Samm: Nüüd väljuge käsu abil ka MySQL-ist ja konteinerist väljumine .

10. samm: Minge oma brauserisse ja sisestage aadress kui kohalik host: 8001 / index.php . See avab teie veebirakenduse. Nüüd sisestage kursuste üksikasjad ja klõpsake nuppu Esita päring .

11. samm: Kui klõpsate nupul Esita päring, minge sõlme, milles teie MySQL-teenus töötab, ja minge siis konteinerisse.

docker exec -it container_id bash mysql -u juur -pedureka KASUTA HandsOn SHOW tabelid vali * kursuse_detailidest

See näitab kõigi kursuste väljundit, mille üksikasjad olete täitnud.

Siin lõpetan oma Dockeri võrgu blogi. Loodan, et teile on see postitus meeldinud. Saate kontrollida muud ajaveebid ka sarjas, mis käsitlevad Dockeri põhitõdesid.

Kui leiate, et see Dockeri konteinerite ajaveeb on asjakohane, vaadake järgmist autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik sisaldab üle 450 000 rahuloleva õppija kogu maailmas. Edureka DevOpsi sertifitseerimiskoolitus aitab õppijatel omandada teadmisi mitmesuguste DevOpsi protsesside ja tööriistade kohta, nagu nukk, Jenkins, Docker, Nagios, Ansible ja GIT SDLC mitme sammu automatiseerimiseks.

Kas otsite sertifikaati DevOpsis?

Kas teil on minu jaoks küsimus? Palun mainige seda kommentaaride jaotises ja võtan teiega ühendust.