Docker tīklošana - izpētiet, kā konteineri sazinās savā starpā



Uzziniet visu par Docker tīkla iespējām, izprotot konteineru tīkla modeli un ieviešot to ar Hands-On.

Mūsdienu pasaulē uzņēmumi ir iecienījuši konteinerizāciju, kam nepieciešamas spēcīgas tīkla veidošanas prasmes, lai pareizi konfigurētu konteineru arhitektūru, un tādējādi tiek ieviests Docker Networking jēdziens.

Šajā Docker Networking emuārā jūs izskatīsit šādas tēmas:





Kas ir dokers?

Lai saprastu Docker, jums jāzina par to, kā lietojumprogrammas tika izvietotas iepriekš, un pēc tam par to, kā lietojumprogrammas tiek izvietotas, izmantojot konteinerus tagad.

Lietojumprogrammu ieviešana vecā un jaunā veidā - Docker Networking - Edureka



Kā redzat iepriekš redzamajā diagrammā, vecajā veidā resursdatorā bija lietojumprogrammas.Tātad šajā lietojumprogrammā esošajās bibliotēkās ir n lietojumprogrammu.Bet, konteinerizējot, operētājsistēmai būs kodols, kas ir vienīgais, kas būs kopīgs starp visām lietojumprogrammām.Tātad lietojumprogrammas nevar piekļūt viena otras bibliotēkām.

Tātad, Dokers vienkāršā izteiksmē ir atvērta platforma lietojumprogrammu izstrādei, piegādei un palaišanai, kas ļauj lietotājam atdalīt lietojumprogrammas no infrastruktūras, izmantojot konteineri ātri piegādāt programmatūru.

Tātad, kā šie konteineri savstarpēji sazinās dažādās situācijās?



Nu, tas nāk caur Docker Networking.

Docker tīklošana

Pirms es dziļi ienirstu Docker Networking, ļaujiet man parādīt Docker darbplūsmu.

Kā redzat iepriekš diagrammā. Izstrādātājs viegli ierakstāmā Docker failā raksta kodu, kas nosaka lietojumprogrammas prasības vai atkarības, un šis Docker fails rada Docker Images. Tātad, neatkarīgi no tā, kādas atkarības ir nepieciešamas konkrētai lietojumprogrammai, ir šajā attēlā.

Tagad Docker Containers nav nekas cits kā Docker Image izpildlaika eksemplārs. Šie attēli tiek augšupielādēti Docker Hub (Gock repozitorijs Docker Images), kurā ir publiski / privāti krātuves.

Tātad no publiskajiem krātuvēm jūs varat arī izvilkt savu attēlu un augšupielādēt savus attēlus Docker Hub. Tad no Docker Hub dažādas komandas, piemēram, kvalitātes nodrošināšanas vai ražošanas komandas, izvilks šo attēlu un sagatavos savus konteinerus. Šie atsevišķi konteineri savstarpēji sazinās caur tīklu, lai veiktu nepieciešamās darbības, un tas nav nekas cits kā Docker Networking.

Tātad, jūs varat definēt Docker Networking kā saziņas eju, caur kuru visi izolētie konteineri dažādās situācijās sazinās viens ar otru, lai veiktu nepieciešamās darbības.

Kādi, jūsuprāt, ir Docker Networking mērķi?

Docker Networking mērķi

Elastīgums - Docker nodrošina elastību, ļaujot jebkuram lietojumprogrammu skaitam dažādās platformās sazināties savā starpā.

Pārrobežu platforma - Docker var viegli izmantot starpplatformā, kas darbojas dažādos serveros, izmantojot Docker Swarm Clusters.

Mērogojamība - Docker ir pilnībā izplatīts tīkls, kas ļauj lietojumprogrammām augt un mērogot atsevišķi, vienlaikus nodrošinot veiktspēju.

Decentralizēts - Docker izmanto decentralizētu tīklu, kas nodrošina iespēju, ka lietojumprogrammas ir izplatītas un ļoti pieejamas. Gadījumā, ja no jūsu resursu kopas pēkšņi pietrūkst konteinera vai resursdatora, varat vai nu piesaistīt papildu resursu, vai arī pāriet uz pakalpojumiem, kas joprojām ir pieejami.

Lietotāju draudzīgs - Docker atvieglo pakalpojumu izvietošanas automatizāciju, padarot tos ērti lietojamus ikdienas dzīvē.

Atbalsts - Docker piedāvā atbalstu no kastes. Tātad iespēja izmantot Docker Enterprise Edition un iegūt visu funkcionalitāti ir ļoti vienkārša un vienkārša, padara Docker platformu ļoti viegli lietojamu.

Lai iespējotu iepriekš minētos mērķus, jums ir nepieciešams kaut kas pazīstams kā konteineru tīkla modelis.

Vai vēlaties izpētīt dažādus DevOps posmus?

Konteineru tīkla modelis (CNM)

Pirms es jums pastāstīšu, kas tieši ir konteineru tīkla modelis, ļaujiet man īsi pastāstīt par Libnetwork, kas ir nepieciešams, pirms saprotat CNM.

Libnetwork ir atvērtā koda Docker bibliotēka, kas ievieš visus galvenos jēdzienus, kas veido CNM.

Tātad, Konteineru tīkla modelis (CNM) standartizē darbības, kas nepieciešamas, lai nodrošinātu tīklu izveidi konteineriem, izmantojot vairākus tīkla draiverus. Lai konfigurētu tīklu konfigurāciju, CNM ir nepieciešams izplatīts atslēgas vērtību krājums, piemēram, konsole.

CNM ir saskarnes IPAM spraudņiem un tīkla spraudņiem.

IPAM spraudņa API tiek izmantoti, lai izveidotu / izdzēstu adrešu kopas un piešķirtu / sadalītu konteinera IP adreses, savukārt tīkla spraudņa API tiek izmantoti, lai izveidotu / izdzēstu tīklus un pievienotu / noņemtu konteinerus no tīkliem.

CNM galvenokārt ir balstīts uz 5 objektiem: tīkla kontrolieris, draiveris, tīkls, galapunkts un smilškaste.

Konteineru tīkla modeļa objekti

Tīkla kontrolieris: Nodrošina ieejas punktu Libnetwork, kas pakļauj vienkāršus API Docker Engine tīkla piešķiršanai un pārvaldībai. Tā kā Libnetwork atbalsta vairākus iebūvētus un attālus draiverus, tīkla kontrolieris ļauj lietotājiem pievienot konkrētu draiveri attiecīgajam tīklam.

Vadītājs: Pieder tīkls un ir atbildīgs par tīkla pārvaldību, piedaloties vairākiem draiveriem, lai apmierinātu dažādus lietošanas gadījumus un izvietošanas scenārijus.

Tīkls: Nodrošina savienojamību starp gala punktu grupu, kas pieder vienam tīklam un tiek izolēti no pārējiem. Tātad, ikreiz, kad tiek izveidots vai atjaunināts tīkls, attiecīgajam draiverim tiks paziņots par notikumu.

Galapunkts: Nodrošina savienojamību pakalpojumiem, kurus tīklā ievieto konteiners, ar citiem pakalpojumiem, ko nodrošina citi konteineri tīklā. Galapunkts apzīmē pakalpojumu un ne vienmēr konkrētu konteineru. Galamērķim ir globāla darbības joma arī klasterī.

Smilšu kaste: Izveidots, kad lietotāji pieprasa izveidot galapunktu tīklā. Smilškastē var būt vairāki gala punkti, kas pievienoti dažādiem tīkliem, norādot konteinera tīkla konfigurāciju, piemēram, IP adresi, MAC adresi, maršrutus, DNS.

Tātad tie bija 5 galvenie CNM objekti.

Tagad ļaujiet man pastāstīt dažādos tīkla draiverus, kas iesaistīti Docker tīklā.

Vai vēlaties DevOps mācīšanos pārcelt uz nākamo līmeni?

Tīkla draiveri

Galvenokārt ir 5 tīkla draiveri: Bridge, Host, None, Overlay, Macvlan

Tilts: Tilta tīkls ir privāts noklusējuma iekšējais tīkls, ko dokeris izveidojis resursdatorā. Tātad, visi konteineri iegūst iekšējo IP adresi, un šie konteineri var piekļūt viens otram, izmantojot šo iekšējo IP. Bridge tīklus parasti izmanto, ja jūsu lietojumprogrammas darbojas atsevišķos konteineros, kuriem ir nepieciešams sazināties.

Saimnieks : Šis draiveris noņem tīkla izolāciju starp dokstacijas resursdatoru un dokstacijas konteineriem, lai tieši izmantotu resursdatora tīklu. Tādējādi ar šo jūs nevarēsit palaist vairākus tīmekļa konteinerus vienā un tajā pašā resursdatorā tajā pašā ostā, kurā osta tagad ir kopīga visiem resursdatora tīklā esošajiem konteineriem.

Nav : Šāda veida tīklā konteineri nav pievienoti nevienam tīklam, un tiem nav piekļuves ārējam tīklam vai citiem konteineriem. Tātad, šis tīkls tiek izmantots, kadvēlaties pilnībā atspējot tīkla kaudzi konteinerā unizveidojiet tikai atgriezeniskās saites ierīci.

Pārklājums : Izveido iekšējo privāto tīklu, kas aptver visus mezglus, kas piedalās spietu kopā. Tātad, pārklājošie tīkli atvieglo saziņu starp bara pakalpojumu un atsevišķu konteineru vai starp diviem atsevišķiem konteineriem dažādos Docker Daemons.

Makvlans: Ļauj piešķirt konteineram MAC adresi, padarot to redzamu kā fizisku ierīci jūsu tīklā. Pēc tam Docker dēmons maršrutē trafiku uz konteineriem pēc to MAC adresēm. Macvlan draiveris ir labākā izvēle, ja paredzams, ka esat tieši savienots ar fizisko tīklu, nevis maršrutēts caur Docker resursdatora tīkla kaudzi.

Labi, tāpēc tā bija visa teorija, kas vajadzīga, lai saprastu Docker Networking. Ļaujiet man turpināt darbu un parādīt jums praktiski, kā tiek veidoti tīkli un konteineri savā starpā.

Rokas virsū

Tātad, pieņemot, ka visi no jums ir instalējuši Docker savās sistēmās, man ir jāparāda scenārijs.

Pieņemsim, ka vēlaties saglabāt kursu nosaukumu un kursu ID, kuriem jums būs nepieciešama tīmekļa lietojumprogramma. Būtībā jums ir nepieciešams viens konteiners tīmekļa lietojumprogrammai un jums ir nepieciešams vēl viens konteiners kā MySQL aizmugurē, šim MySQL konteineram jābūt saistītam ar tīmekļa lietojumprogrammas konteineru.

apļa programma c

Kā būtu, es praktiski izpildu iepriekš minēto piemēru.

Iesaistītie soļi:

  • Inicializējiet Docker Swarm, lai izveidotu Swarm kopu.
  • Izveidojiet pārklājuma tīklu
  • Izveidojiet pakalpojumus gan tīmekļa lietojumprogrammām, gan MySQL
  • Pievienojiet programmas, izmantojot tīklu

Sāksim!

1. darbība: Inicializējiet Docker Swarm mašīnā.

docker spiets init - advertise-addr 192.168.56.101

Karodziņš –advertise-addr konfigurē pārvaldnieka mezglu tā adreses publicēšanai kā 192.168.56.101. Pārējiem bara mezgliem jāspēj piekļūt pārvaldniekam pēc IP adreses.

2. darbība: Tagad, ja vēlaties pievienoties šim pārvaldnieka mezglam darba ņēmēja mezglam, nokopējiet saiti, kuru saņemat, inicializējot spietu darba ņēmēja mezglā.
3. solis: Izveidojiet pārklājuma tīklu.

docker tīkla izveidot -d pārklājiet myoverlaynetwork

Ja myoverlay ir tīkla nosaukums un -d ļauj Docker Daemon darboties fonā.

4.1. Darbība: Izveidojiet pakalpojumu webapp1 un izmantojiet izveidoto tīklu, lai šo pakalpojumu izvietotu pār spietu kopu.

docker pakalpojuma izveide --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

Kur -pir paredzēts ostas pārsūtīšanai,hsharir konta nosaukums Docker Hub, un webapp ir tīmekļa lietojumprogrammas nosaukums, kas jau atrodas Docker Hub.

4.2. Darbība: Tagad pārbaudiet, vai pakalpojums ir izveidots.

dokstacijas pakalpojums ls

5.1. Darbība: Tagad izveidojiet pakalpojumu MySQL un izmantojiet izveidoto tīklu, lai izvietotu pakalpojumu pār spietu kopu.

docker servisa izveide --name mysql -d --net myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


5.2. Darbība: Tagad pārbaudiet, vai pakalpojums ir izveidots.

dokstacijas pakalpojums ls

6.1. Darbība: Pēc tam pārbaudiet, kurš konteiners darbojas jūsu galvenajā mezglā, un dodieties uz hshar / webapp konteineru.

dokers ps

6.2. Darbība: Tātad, jūs varat redzēt, ka pārvaldnieka mezglā atrodas tikai tīmekļa lietojumprogrammas pakalpojums. Tātad, iekļūstiet tīmekļa lietotnes konteinerā.

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

Docker ps komandā tiks uzskaitīti abi jūsu konteineri ar attiecīgo konteinera ID. Otrā komanda iespējos šo konteineru interaktīvā režīmā.

7. solis: Tagad nomainiet $ servername no localhost uz mysql un $ password no “” uz “edureka”, kā arī nomainiet visu nepieciešamo datu bāzes informāciju un saglabājiet failu index.php, izmantojot īsinājumtaustiņu Ctrl + x un pēc tam y, lai saglabātu, un nospiediet enter.

8. solis: Tagad dodieties uz mysql konteineru, kas darbojas citā mezglā.

docker exec -it container_id bash

9. solis: Kad esat nonācis mysql konteinerā, ievadiet tālāk norādītās komandas, lai izmantotu datu bāzi MySQL.

9.1. Darbība: Iegūstiet piekļuvi mysql konteinera izmantošanai.

mysql -u sakne -pedureka

Kur -u apzīmē lietotāju un -p ir jūsu mašīnas parole.

9.2. Darbība: Izveidojiet mysql datu bāzi, kas tiks izmantota, lai iegūtu datus no webapp1.

IZVEIDOT DATU BĀZI HandsOn

9.3. Darbība: Izmantojiet izveidoto datu bāzi.

LIETOT HandsOn

9.4. Darbība: Šajā datu bāzē izveidojiet tabulu, kas tiks izmantota, lai iegūtu datus no webapp1.

IZVEIDOT TABULU kursu_detaļas (kursa_nosaukums VARCHAR (10), kursa_ID VARCHAR (11))

9.5. Darbība: Tagad izejiet arī no MySQL un konteinera, izmantojot komandu Izeja .

10. solis: Atveriet pārlūkprogrammu un ievadiet adresi kā localhost: 8001 / index.php . Tas atvērs jūsu tīmekļa lietojumprogrammu. Tagad ievadiet informāciju par kursiem un noklikšķiniet uz Iesniegt vaicājumu .

11. solis: Kad esat noklikšķinājis uz Iesniegt vaicājumu, dodieties uz mezglu, kurā darbojas MySQL pakalpojums, un pēc tam dodieties uz konteinera iekšpusi.

docker exec -it container_id bash mysql -u root -pedureka LIETOT HandsOn SHOW tabulas atlasiet * no course_details

Tas parādīs visu kursu rezultātus, par kuriem esat aizpildījis sīkāku informāciju.

Šeit es beidzu savu Docker Networking emuāru. Es ceru, ka jums ir paticis šis ieraksts. Jūs varat pārbaudīt citi emuāri arī sērijā, kas nodarbojas ar Dokera pamatiem.

Ja jums šķita, ka šis Docker Container emuārs ir svarīgs, skatiet vietni Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 450 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka DevOps sertifikācijas apmācības kurss palīdz izglītojamajiem iegūt zināšanas par dažādiem DevOps procesiem un rīkiem, piemēram, Leļļu, Jenkins, Docker, Nagios, Ansible un GIT vairāku darbību automatizēšanai SDLC.

Vai meklējat sertifikātu DevOps?

Vai man ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un es sazināšos ar jums.