„Docker“ tinklas - ištirkite, kaip konteineriai bendrauja tarpusavyje



Sužinokite viską apie „Docker“ tinklo galimybes, suprantant konteinerių tinklo modelį ir įgyvendinant jį rankomis.

Šiuolaikiniame pasaulyje įmonės yra suinteresuotos konteineriais, kuriems reikalingi stiprūs tinklų kūrimo įgūdžiai, kad būtų tinkamai sukonfigūruota konteinerių architektūra, taigi pristatoma „Docker Networking“ sąvoka.

Šiame „Docker Networking“ tinklaraštyje nagrinėsite šias temas:



Kas yra „Docker“?

Norėdami suprasti „Docker“, turite žinoti apie istoriją, kaip programos buvo diegiamos anksčiau, ir tada, kaip programos yra diegiamos naudojant konteinerius.

Programų diegimas senais ir naujais būdais - „Docker Networking“ - „Edureka“



Kaip matote aukščiau pateiktoje diagramoje, senuoju būdu pagrindiniame kompiuteryje buvo taikomosios programos.Taigi, n programų skaičius naudojasi toje operacinėje sistemoje esančiomis bibliotekomis.Tačiau naudojant konteinerius operacinė sistema turės branduolį, kuris yra vienintelis dalykas, kuris bus įprastas tarp visų programų.Taigi, programos negali pasiekti viena kitos bibliotekų.

Taigi, Dokeris paprastai tariant, yra atvira platforma programų kūrimui, pristatymui ir vykdymui, leidžianti vartotojui atskirti programas nuo infrastruktūros naudojant konteineriai greitai pristatyti programinę įrangą.

Taigi, kaip šie konteineriai bendrauja tarpusavyje įvairiose situacijose?



Na, tai ateina per „Docker Networking“.

„Docker“ tinklas

Prieš gilindamasis į „Docker Networking“, leiskite man parodyti „Docker“ darbo eigą.

Kaip matote aukščiau pateiktoje diagramoje. Kūrėjas lengvai parašomame „Docker“ faile parašo kodą, kuriame nurodomi programos reikalavimai arba priklausomybės, ir šis „Docker“ failas sukuria „Docker Images“. Taigi, bet kokios priklausomybės, reikalingos tam tikrai programai, yra šiame paveikslėlyje.

Dabar „Docker Containers“ yra ne kas kita, o „Docker Image“ vykdymo laikas. Šie vaizdai įkeliami į „Docker Hub“ („Git“ saugyklą, skirtą „Docker Images“), kurioje yra viešosios ir privačios saugyklos.

Taigi, iš viešųjų saugyklų, taip pat galite išsitraukti savo atvaizdą ir įkelti savo atvaizdus į „Docker Hub“. Tada iš „Docker Hub“ įvairios komandos, tokios kaip kokybės užtikrinimo ar gamybos komandos, ištrauks tą vaizdą ir paruoš savo konteinerius. Šie atskiri konteineriai bendrauja tarpusavyje per tinklą, kad atliktų reikiamus veiksmus, ir tai yra ne kas kita, o „Docker Networking“.

Taigi, „Docker Networking“ galite apibrėžti kaip ryšio praėjimą, per kurį visi izoliuoti konteineriai bendrauja tarpusavyje įvairiose situacijose, kad atliktų reikiamus veiksmus.

Kaip manote, kokie yra „Docker Networking“ tikslai?

„Docker Networking“ tikslai

Lankstumas - „Docker“ suteikia lankstumo suteikdamas galimybę bet kokiam programų skaičiui įvairiose platformose bendrauti tarpusavyje.

Skersinė platforma - „Docker“ gali būti lengvai naudojamas įvairiose platformose, kurios veikia įvairiuose serveriuose, naudojant „Docker Swarm Clusters“.

Mastelis - „Docker“ yra visiškai paskirstytas tinklas, leidžiantis programoms augti ir masto atskirai, kartu užtikrinant našumą.

Decentralizuotas - „Docker“ naudojasi decentralizuotu tinklu, kuris suteikia galimybę išplėsti programas ir būti labai prieinamomis. Jei staiga trūksta sudėtinio rodinio ar pagrindinio kompiuterio iš jūsų išteklių telkinio, galite pateikti papildomą išteklių arba perduoti vis dar pasiekiamoms paslaugoms.

Draugiškas vartotojui - „Docker“ leidžia lengvai automatizuoti paslaugų diegimą, todėl jas lengva naudoti kasdieniame gyvenime.

Parama - „Docker“ siūlo atramas iš dėžutės. Taigi galimybė naudoti „Docker Enterprise Edition“ ir gauti visas funkcijas yra labai lengva ir paprasta, todėl „Docker“ platformą labai lengva naudoti.

Norint įgalinti pirmiau nurodytus tikslus, jums reikia kažko, vadinamo konteinerių tinklo modeliu.

Norite ištirti įvairius „DevOps“ etapus?

Konteinerių tinklo modelis (CNM)

Prieš sakydamas, kas iš tikrųjų yra konteinerių tinklo modelis, leiskite man trumpai papasakoti apie „Libnetwork“, kurio reikia, kol suprasite CNM.

„Libnetwork“ yra atviro kodo „Docker“ biblioteka, įgyvendinanti visas pagrindines CNM sudarančias sąvokas.

Taigi, Konteinerių tinklo modelis (CNM) standartizuojami veiksmai, reikalingi norint sudaryti tinklų funkciją konteineriams, naudojantiems kelis tinklo tvarkykles. CNM reikia paskirstytos raktų vertės saugyklos, pvz., Konsolės, kad būtų galima išsaugoti tinklo konfigūraciją.

CNM turi sąsajas IPAM ir tinklo papildiniams.

metodo perkrovimas ir nepaisymas „Java“ pavyzdyje

IPAM įskiepio API yra naudojamos kuriant / ištrinant adresų grupes ir paskirstant / paskirstant konteinerio IP adresus, o tinklo papildinio API naudojamos tinklams kurti / ištrinti ir konteineriams iš tinklų pridėti / pašalinti.

CNM daugiausia sukūrė 5 objektus: tinklo valdiklį, tvarkyklę, tinklą, galinį tašką ir smėlio dėžę.

Konteinerių tinklo modelio objektai

Tinklo valdiklis: Pateikia įvesties tašką į „Libnetwork“, kuris atskleidžia paprastas „Docker Engine“ API, skirtas paskirstyti ir valdyti tinklus. Kadangi „Libnetwork“ palaiko kelias įmontuotas ir nuotolines tvarkykles, tinklo valdiklis leidžia vartotojams prie konkretaus tinklo prijungti tam tikrą tvarkyklę.

Vairuotojas: Turi tinklą ir yra atsakingas už tinklo valdymą, dalyvaudamas keliuose tvarkyklėse, kad būtų patenkinti įvairūs naudojimo atvejai ir diegimo scenarijai.

Tinklas: Užtikrina ryšį tarp galinių taškų, priklausančių tam pačiam tinklui ir izoliuotų nuo kitų, grupės. Taigi, kai tik bus sukurtas ar atnaujintas tinklas, atitinkamas tvarkyklė bus informuota apie įvykį.

Galutinis taškas: Teikia paslaugų, kurias veikia konteineris tinkle, ryšį su kitomis paslaugomis, kurias teikia kiti tinklo konteineriai. Galutinis taškas reiškia paslaugą ir nebūtinai konkretų sudėtinį rodinį. Galutinis taškas taip pat turi visuotinę taikymo sritį klasteryje.

Smėlio dėžė: Sukurta vartotojams paprašius sukurti tinkle galinį tašką. „Sandbox“ gali turėti kelis galinius taškus, prijungtus prie skirtingų tinklų, nurodančių konteinerio tinklo konfigūraciją, pvz., IP adresą, MAC adresą, maršrutus, DNS.

Taigi, tai buvo 5 pagrindiniai CNM objektai.

Dabar leiskite jums papasakoti įvairius tinklo tvarkykles, susijusias su „Docker“ tinklu.

Norite pakelti „DevOps“ mokymąsi į kitą lygį?

Tinklo tvarkyklės

Daugiausia yra 5 tinklo tvarkyklės: „Bridge“, „Host“, „None“, „Overlay“, „Macvlan“

Tiltas: Tiltinis tinklas yra privatus numatytasis vidinis tinklas, kurį priegloboje sukūrė dokininkas. Taigi, visi konteineriai gauna vidinį IP adresą ir šie konteineriai gali pasiekti vienas kitą naudodami šį vidinį IP. „Bridge“ tinklai paprastai naudojami, kai jūsų programos veikia atskiruose konteineriuose, su kuriais reikia bendrauti.

split funkcija Java pavyzdyje

Šeimininkas : Ši tvarkyklė pašalina tinklo izoliaciją tarp doko pagrindinio kompiuterio ir doko talpyklų, kad būtų galima tiesiogiai naudoti pagrindinio kompiuterio tinklą. Taigi, tuo pačiu negalėsite paleisti kelių žiniatinklio konteinerių tame pačiame pagrindiniame kompiuteryje tame pačiame prievade, nes dabar prievadas yra bendras visiems pagrindinio tinklo talpykloms.

Nė vienas : Tokio tipo tinkle konteineriai nėra prijungti prie jokio tinklo ir neturi jokios prieigos prie išorinio tinklo ar kitų talpyklų. Taigi, šis tinklas naudojamas, kainorite visiškai išjungti tinklo talpą ant konteinerio irsukurkite tik atgalinį įrenginį.

Perdanga : Sukuria vidinį privatų tinklą, kuris apima visus mazgus, dalyvaujančius spiečiaus klasteryje. Taigi, perdangos tinklai palengvina ryšį tarp būrio tarnybos ir atskiro konteinerio arba tarp dviejų atskirų konteinerių skirtinguose „Docker Daemons“.

Macvlanas: Leidžia priskirti konteineriui MAC adresą, kad jūsų tinkle jis būtų rodomas kaip fizinis įrenginys. Tada „Docker“ demonas nukreipia srautą į konteinerius pagal savo MAC adresus. „Macvlan“ tvarkyklė yra geriausias pasirinkimas, kai tikimasi, kad esate tiesiogiai prisijungę prie fizinio tinklo, o ne perduodami per „Docker“ pagrindinio kompiuterio tinklo kaminą.

Gerai, taigi tai buvo visa teorija, reikalinga norint suprasti „Docker Networking“. Leiskite man judėti toliau ir parodyti jums praktiškai, kaip kuriami tinklai ir konteineriai bendrauja tarpusavyje.

Rankos

Taigi, darant prielaidą, kad visi jūs įdiegėte „Docker“ savo sistemose, turiu parodyti scenarijų.

Tarkime, kad norite išsaugoti kursų pavadinimus ir kursų ID, kuriems jums reikės žiniatinklio programos. Iš esmės jums reikia vieno konteinerio žiniatinklio programai ir dar vieno konteinerio kaip MySQL programinei įrangai, kuri turėtų būti susieta su žiniatinklio programų konteineriu.

Kaip aš praktiškai įgyvendinu aukščiau pateiktą pavyzdį.

Susiję žingsniai:

  • Inicijuokite „Docker Swarm“, kad suformuotumėte „Swarm“ grupę.
  • Sukurkite perdangos tinklą
  • Kurkite paslaugas tiek žiniatinklio programoms, tiek „MySQL“
  • Prijunkite programas per tinklą

Pradėkime!

1 žingsnis: Inicializuokite mašinoje „Docker Swarm“.

dokininko būrys init --advertise-addr 192.168.56.101

Vėliava –advertise-addr sukonfigūruoja tvarkyklės mazgą skelbti savo adresą kaip 192.168.56.101. Kiti spiečiaus mazgai turi turėti galimybę pasiekti valdytoją IP adresu.

2 žingsnis: Dabar, jei norite prisijungti prie šio valdytojo mazgo prie darbuotojo mazgo, nukopijuokite nuorodą, kurią gaunate, kai inicijuojate spiečius ant darbuotojo mazgo.
3 žingsnis: Sukurkite perdangos tinklą.

docker tinklas sukuria -d perdangos myoverlaynetwork

Kur „myoverlay“ yra tinklo pavadinimas, o „-d“ leidžia „Docker Daemon“ veikti fone.

4.1 žingsnis: Sukurkite paslaugos „webapp1“ ir naudokite sukurtą tinklą, kad šią paslaugą įdiegtumėte per spiečių grupę.

„Docker“ paslaugos sukūrimas --name webapp1 -d - tinklas myoverlaynetwork -p 8001: 80 hshar / webapp

Kur -pskirtas uosto ekspedijavimui,hsharasyra „Docker Hub“ paskyros pavadinimas, o „webapp“ yra žiniatinklio programos, jau esančios „Docker Hub“, pavadinimas.

4.2 žingsnis: Dabar patikrinkite, ar paslauga sukurta, ar ne.

dokininkų tarnyba ls

5.1 žingsnis: Dabar sukurkite „MySQL“ paslaugą ir naudokite sukurtą tinklą, kad tarnyba būtų įdiegta per spiečių grupę.

„Docker“ paslaugos sukūrimas --name mysql -d --net myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


5.2 žingsnis: Dabar patikrinkite, ar paslauga sukurta, ar ne.

dokininkų tarnyba ls

6.1 žingsnis: Po to patikrinkite, kuris konteineris veikia jūsų pagrindiniame mazge, ir eikite į „hshar“ / „webapp“ konteinerį.

dokininkas ps

6.2 žingsnis: Taigi, galite pamatyti, kad tik žiniatinklio programos paslauga yra valdytojo mazge. Taigi, patekite į žiniatinklio programos konteinerį.

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

„Docker ps“ komandoje bus išvardyti jūsų konteineriai su atitinkamais konteinerio ID. Antroji komanda įgalins tą konteinerį interaktyviuoju režimu.

7 žingsnis: Dabar pakeiskite $ servername iš localhost į mysql ir $ password iš „“ į „edureka“, taip pat pakeiskite visus reikiamus duomenų bazės duomenis ir išsaugokite failą index.php naudodami spartųjį klavišą „Ctrl + x“ ir po to y išsaugoti ir paspauskite enter.

8 žingsnis: Dabar eikite į „mysql“ konteinerį, kuris veikia kitame mazge.

docker exec -it container_id bash

9 žingsnis: Įėję į „mysql“ konteinerį, įveskite toliau nurodytas komandas, kad „MySQL“ naudotumėte duomenų bazę.

9.1 žingsnis: Gaukite prieigą prie „mysql“ talpyklos naudojimo.

mysql -u šaknis -pedureka

Kur -u reiškia vartotoją, o -p yra jūsų mašinos slaptažodis.

9.2 žingsnis: Sukurkite „mysql“ duomenų bazę, kuri bus naudojama norint gauti duomenis iš „webapp1“.

Sukurti duomenų bazę „HandsOn“

9.3 žingsnis: Naudokite sukurtą duomenų bazę.

NAUDOTI „HandsOn“

galite naudoti spausdintuvų klasę, kad atidarytumėte failą, skirtą rašyti ir įrašyti į jį duomenis.

9.4 žingsnis: Šioje duomenų bazėje sukurkite lentelę, kuri bus naudojama norint gauti duomenis iš „webapp1“.

SUKURTI LENTEL course kurso_duomenys (kurso_pavadinimas VARCHAR (10), kurso_id VARCHAR (11))

9.5 žingsnis: Dabar taip pat išeikite iš MySQL ir konteinerio naudodami komandą išėjimas .

10 žingsnis: Eikite į savo naršyklę ir įveskite adresą kaip vietinis šeimininkas: 8001 / index.php . Tai atvers jūsų žiniatinklio programą. Dabar įveskite išsamią kursų informaciją ir spustelėkite Pateikti užklausą .

11 žingsnis: Kai spustelėsite Pateikti užklausą, eikite į mazgą, kuriame veikia „MySQL“ paslauga, tada eikite į konteinerio vidų.

docker exec -it container_id bash mysql -u root -pedureka NAUDOTI „HandsOn SHOW“ lenteles pasirinkite * iš course_details

Tai parodys visų kursų, apie kuriuos užpildėte išsamią informaciją, rezultatus.

Čia aš baigiu savo „Docker Networking“ tinklaraštį. Tikiuosi, kad jums patiko šis įrašas. Galite patikrinti kiti tinklaraščiai serijoje, kurioje kalbama apie Dockerio pagrindus.

Jei radote šį „Docker Container“ tinklaraštį aktualų, patikrinkite sukūrė „Edureka“, patikima internetinė mokymosi įmonė, turinti daugiau nei 450 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka DevOps“ sertifikavimo mokymo kursas padeda besimokantiesiems įgyti įvairių „DevOps“ procesų ir įrankių, tokių kaip „Lėlė“, „Jenkins“, „Docker“, „Nagios“, „Ansible“ ir GIT, kelių automatizuotų SDLC etapų patirties.

Ieškote sertifikato „DevOps“?

Turite man klausimą? Prašau paminėti tai komentarų skiltyje, ir aš susisieksiu su jumis.