Docker Networking - Utforsk hvordan containere kommuniserer med hverandre



Lær alt om Docker-nettverkskapabiliteter med en forståelse av Container Network Model og implementering av den med en hands-on.

I dagens verden har bedrifter blitt opptatt av containerisering som krever sterke nettverksferdigheter for å konfigurere en containerarkitektur riktig, og dermed introduserer dette konseptet Docker Networking.

I denne bloggen på Docker Networking vil du gå gjennom følgende emner:





Hva er Docker?

For å forstå Docker, må du vite om historien om hvordan applikasjoner ble distribuert før, og hvordan applikasjoner distribueres ved hjelp av containere nå.

Implementering av applikasjoner på gammel måte og ny måte - Docker Networking - Edureka



Som du kan se i diagrammet ovenfor, hadde den gamle måten applikasjoner på verten.Så et antall applikasjoner deler bibliotekene som finnes i det operativsystemet.Men med containerisering vil operativsystemet ha en kjerne som er det eneste som kommer til å være vanlig mellom alle applikasjonene.Så applikasjoner får ikke tilgang til hverandres biblioteker.

Så, Docker Enkelt sagt er en åpen plattform for utvikling, frakt og kjøring av applikasjoner, slik at brukeren kan skille applikasjoner fra infrastrukturer ved hjelp av containere å levere programvare raskt.

Så hvordan kommuniserer disse containerne med hverandre i forskjellige situasjoner?



Vel, det kommer gjennom Docker Networking.

Docker Networking

Før jeg dykker ned i Docker Networking, la meg vise deg arbeidsflyten til Docker.

Som du kan se i diagrammet ovenfor. En utvikler skriver en kode som angir applikasjonskrav eller avhengigheter i en Docker-fil som er lett å skrive, og denne Docker-filen produserer Docker-bilder. Så uansett avhengighet som kreves for en bestemt applikasjon, er det til stede i dette bildet.

Nå er Docker Containers ingenting annet enn kjøretidforekomsten av Docker Image. Disse bildene lastes opp på Docker Hub (Git repository for Docker Images) som inneholder offentlige / private arkiver.

Så fra offentlige arkiver kan du også trekke bildet ditt, og du kan laste opp dine egne bilder til Docker Hub. Deretter, fra Docker Hub, vil forskjellige team som kvalitetssikring eller produksjonsteam trekke det bildet og forberede sine egne containere. Disse individuelle containerne kommuniserer med hverandre gjennom et nettverk for å utføre de nødvendige handlingene, og dette er ingenting annet enn Docker Networking.

Så du kan definere Docker Networking som en kommunikasjon som alle isolerte containere kommuniserer med hverandre i forskjellige situasjoner for å utføre de nødvendige handlingene.

Hva tror du er målene for Docker Networking?

Mål for Docker Networking

Fleksibilitet - Docker gir fleksibilitet ved å gjøre det mulig for et hvilket som helst antall applikasjoner på forskjellige plattformer å kommunisere med hverandre.

Kryssplattform - Docker kan enkelt brukes på tvers av plattformer som fungerer på tvers av forskjellige servere ved hjelp av Docker Swarm Clusters.

Skalerbarhet - Docker er et fullt distribuert nettverk som gjør det mulig for applikasjoner å vokse og skalere individuelt samtidig som det sikres ytelse.

Desentralisert - Docker bruker et desentralisert nettverk, som gjør det mulig å spre applikasjonene og være svært tilgjengelige. I tilfelle en container eller en vert plutselig mangler i ressursmassen din, kan du enten ta opp en ekstra ressurs eller overføre til tjenester som fremdeles er tilgjengelige.

Brukervennlig - Docker gjør det enkelt å automatisere distribusjonen av tjenester, noe som gjør dem enkle å bruke i det daglige livet.

Brukerstøtte - Docker tilbyr out-of-the-box støtter. Så muligheten til å bruke Docker Enterprise Edition og få all funksjonaliteten veldig enkel og grei, gjør Docker-plattformen til å være veldig enkel å bli brukt.

For å aktivere de ovennevnte målene, trenger du noe kjent som Container Network Model.

Vil du utforske forskjellige DevOps-stadier?

Container Network Model (CNM)

Før jeg forteller deg hva som er en Container Network Model, la meg orientere deg om Libnetwork som er nødvendig før du forstår CNM.

Libnetwork er et Docker-bibliotek med åpen kildekode som implementerer alle nøkkelkonseptene som utgjør CNM.

hvordan lage en pakke

Så, Container Network Model (CNM) standardiserer trinnene som kreves for å gi nettverk for containere som bruker flere nettverksdrivere. CNM krever en distribuert nøkkelverdi-butikk som konsoll for å lagre nettverkskonfigurasjonen.

CNM har grensesnitt for IPAM plugins og nettverks plugins.

IPAM-plugin-API-ene brukes til å opprette / slette adressebassenger og tildele / deallocate container-IP-adresser, mens API-er for nettverkstillegg brukes til å opprette / slette nettverk og legge til / fjerne containere fra nettverk.

En CNM har hovedsakelig bygget på 5 objekter: Network Controller, Driver, Network, Endpoint og Sandbox.

Container Network Model Objects

Nettverkskontroller: Gir inngangspunktet til Libnetwork som avslører enkle API-er for Docker Engine for å tildele og administrere nettverk. Siden Libnetwork støtter flere innebygde og eksterne drivere, lar Network Controller brukere koble en bestemt driver til et gitt nettverk.

Sjåfør: Eier nettverket og er ansvarlig for å administrere nettverket ved å ha flere drivere som deltar for å tilfredsstille ulike brukssaker og distribusjonsscenarier.

hva er rmi i java

Nettverk: Gir tilkobling mellom en gruppe endepunkter som tilhører samme nettverk og isoleres fra resten. Så når et nettverk blir opprettet eller oppdatert, vil den tilsvarende driveren bli varslet om hendelsen.

Sluttpunkt: Tilbyr tilkobling for tjenester eksponert av en container i et nettverk med andre tjenester levert av andre containere i nettverket. Et endepunkt representerer en tjeneste og ikke nødvendigvis en bestemt container, Endpoint har også et globalt omfang i en klynge.

Sandkasse: Opprettet når brukere ber om å opprette et sluttpunkt i et nettverk. En sandkasse kan ha flere endepunkter knyttet til forskjellige nettverk som representerer beholderens nettverkskonfigurasjon, for eksempel IP-adresse, MAC-adresse, ruter, DNS.

Så det var de fem hovedobjektene til CNM.

La meg fortelle deg de forskjellige nettverksdriverne som er involvert i Docker-nettverk.

Vil du ta DevOps-læring til et neste nivå?

Nettverksdrivere

Det er hovedsakelig 5 nettverksdrivere: Bridge, Host, None, Overlay, Macvlan

Bro: Bridge-nettverket er et privat standard internt nettverk opprettet av docker på verten. Så alle containere får en intern IP-adresse, og disse containerne kan få tilgang til hverandre ved hjelp av denne interne IP-en. Bridge-nettverk brukes vanligvis når applikasjonene dine kjører i frittstående containere som trenger å kommunisere.

Vert : Denne driveren fjerner nettverksisolasjonen mellom docker-verten og docker-containerne for å bruke vertens nettverk direkte. Så med dette vil du ikke kunne kjøre flere nettcontainere på samme vert, på samme port som porten nå er vanlig for alle containere i vertsnettverket.

Ingen : I denne typen nettverk er containere ikke koblet til noe nettverk og har ikke tilgang til det eksterne nettverket eller andre containere. Så dette nettverket brukes nårdu vil deaktivere nettverksstakken på en container, ogbare opprett en loopback-enhet.

Overlegg : Oppretter et internt privat nettverk som strekker seg over alle nodene som deltar i svermeklyngen. Så, Overlay-nettverk muliggjør kommunikasjon mellom en svermetjeneste og en frittstående container, eller mellom to frittstående containere på forskjellige Docker Daemons.

Macvlan: Lar deg tilordne en MAC-adresse til en container, slik at den vises som en fysisk enhet i nettverket ditt. Deretter dirigerer Docker-demonen trafikk til containere etter deres MAC-adresser. Macvlan-driveren er det beste valget når du forventes å være direkte koblet til det fysiske nettverket, i stedet for å bli rutet gjennom Docker-vertens nettverksstabel.

Ok, så det var all teorien som kreves for å forstå Docker Networking. La meg nå gå videre og vise deg praktisk hvordan nettverkene opprettes og containere kommuniserer med hverandre.

Praktisk

Så med en antagelse om at dere alle har installert Docker på systemene dine, har jeg et scenario å vise frem.

Anta at du vil lagre kursnavn og kurs-ID, som du trenger en webapplikasjon for. I utgangspunktet trenger du en container for webapplikasjon, og du trenger en container til som MySQL for backend, at MySQL-container skal være koblet til webapplikasjonsbeholderen.

Hva med å utføre ovennevnte eksempel praktisk.

Fremgangsmåten involvert:

  • Initialiser Docker Swarm for å danne en Swarm-klynge.
  • Opprett et overleggsnettverk
  • Lag tjenester for både webapplikasjon og MySQL
  • Koble applikasjonene gjennom nettverket

La oss komme i gang!

Trinn 1: Initialiser Docker Swarm på maskinen.

docker sverm init --advertise-addr 192.168.56.101

Flagget –advertise-addr konfigurerer managernoden til å publisere adressen som 192.168.56.101. De andre nodene i svermen må ha tilgang til manager på IP-adressen.

Steg 2: Nå, hvis du vil bli med denne managernoden til arbeidermodulen, kopierer du lenken du får når du initialiserer svermen på arbeidermodulen.
Trinn 3: Opprett et overleggsnettverk.

docker-nettverk oppretter -d overlegg myoverlaynetwork

Hvor myoverlay er nettverksnavnet og -d gjør det mulig for Docker Daemon å kjøre i bakgrunnen.

Trinn 4.1: Opprett en tjenestewebapp1 og bruk nettverket du har opprettet for å distribuere denne tjenesten over svermeklyngen.

dokkertjeneste oppretter --navn webapp1 -d - nettverk myoverlaynetwork -p 8001: 80 hshar / webapp

Hvor -per for port forwarding,hsharer kontonavnet på Docker Hub, og webapp er navnet på webapplikasjonen som allerede finnes på Docker Hub.

Trinn 4.2: Sjekk nå om tjenesten er opprettet eller ikke.

docker-tjeneste ls

Trinn 5.1: Opprett nå en MySQL-tjeneste og bruk nettverket du har opprettet for å distribuere tjenesten over svermeklyngen.

Dokkertjeneste oppretter --navn mysql -d - nettverk myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Trinn 5.2: Sjekk nå om tjenesten er opprettet eller ikke.

docker-tjeneste ls

Trinn 6.1: Etter det, sjekk hvilken container som kjører på hovednoden din, og gå inn i hshar / webapp-beholderen.

docker ps

Trinn 6.2: Så du kan se at bare webapp-tjenesten er på managernoden. Så kom inn i webapp-beholderen.

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

Docker ps-kommandoen vil liste opp begge containerne dine med deres respektive container-ID. Den andre kommandoen vil aktivere beholderen i en interaktiv modus.

Trinn 7: Endre nå $ servernavn fra localhost til mysql og $ passord fra '' 'til' edureka ', og endre også alt fyll i databasedetaljer som kreves, og lagre index.php-filen ved å bruke hurtigtasten Ctrl + x og deretter y for å lagre, og trykk enter.

Trinn 8: Gå nå inn i mysql-beholderen som kjører på en annen node.

docker exec -it container_id bash

Trinn 9: Når du går inn i mysql-beholderen, skriver du inn kommandoene nedenfor for å bruke databasen i MySQL.

Trinn 9.1: Få tilgang til å bruke mysql-containeren.

mysql -u root -pedureka

Hvor -u representerer brukeren og -p er passordet til maskinen din.

Trinn 9.2: Opprett en database i mysql som skal brukes til å hente data fra webapp1.

hvordan du installerer php på Windows 7
OPPRETT DATABASIS HandsOn

Trinn 9.3: Bruk den opprettede databasen.

BRUK HandsOn

Trinn 9.4: Lag en tabell i denne databasen som skal brukes til å hente data fra webapp1.

OPPRETT TABELL kursdata (kursnavn VARCHAR (10), kurs_ID VARCHAR (11))

Trinn 9.5: Gå nå ut av MySQL og container ved å bruke kommandoen exit .

Trinn 10: Gå til nettleseren din og skriv inn adressen som localhost: 8001 / index.php . Dette åpner webapplikasjonen din. Nå, skriv inn detaljene for kurs og klikk på Send inn spørring .

Trinn 11: Når du har klikket på Send spørring, går du til noden der MySQL-tjenesten din kjører, og deretter går du inn i containeren.

docker exec -it container_id bash mysql -u root -pedureka BRUK HandsOn SHOW-tabeller velg * fra kurs_detaljer

Dette viser resultatene fra alle kursene, som du har fylt ut detaljene i.

Her avslutter jeg Docker Networking-bloggen min. Jeg håper du har hatt glede av dette innlegget. Du kan sjekke andre blogger i serien også, som tar for seg det grunnleggende om Docker.

Hvis du fant denne Docker Container-bloggen relevant, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk av mer enn 450 000 fornøyde elever spredt over hele verden. Edureka DevOps Certification Training-kurset hjelper elever å få ekspertise i forskjellige DevOps-prosesser og verktøy som Puppet, Jenkins, Docker, Nagios, Ansible og GIT for å automatisere flere trinn i SDLC.

Leter du etter sertifisering i DevOps?

Har du et spørsmål til meg? Vennligst nevn det i kommentarfeltet, så kommer jeg tilbake til deg.