Xarxa Docker: exploreu com es comuniquen els contenidors entre si



Obteniu més informació sobre les capacitats de xarxa de Docker amb una comprensió del model de xarxa de contenidors i la implementació amb una pràctica pràctica.

Al món actual, les empreses s’han interessat en la creació de contenidors, que requereixen de fortes habilitats en xarxa per configurar adequadament una arquitectura de contenidors i, per tant, introdueix el concepte de Docker Networking.

En aquest bloc sobre Docker Networking, passareu pels temes següents:





Què és Docker?

Per entendre Docker, heu de conèixer la història de com es desplegaven les aplicacions abans i després de com es desplegaven les aplicacions mitjançant contenidors.

Desplegament d



Com podeu veure al diagrama anterior, l'antiga forma tenia aplicacions a l'amfitrió.Per tant, n nombre d'aplicacions comparteixen les biblioteques presents en aquest sistema operatiu.Però, amb la contenerització, el sistema operatiu tindrà un nucli, que és l’únic que serà comú entre totes les aplicacions.Per tant, les aplicacions no poden accedir a les biblioteques de les altres.

Tan, Docker en termes senzills és una plataforma oberta per al desenvolupament, l'enviament i l'execució d'aplicacions, que permet a l'usuari separar les aplicacions de les infraestructures amb l'ajut de contenidors per lliurar programari ràpidament.

Llavors, com es comuniquen aquests contenidors entre si en diverses situacions?



Bé, això arriba a través de Docker Networking.

Xarxa Docker

Abans d’endinsar-me en Docker Networking, deixeu-me que us mostri el flux de treball de Docker.

mostra com crear un conjunt

Com podeu veure al diagrama anterior. Un desenvolupador escriu un codi que estipula els requisits de l'aplicació o les dependències en un fitxer Docker fàcil d'escriure i aquest fitxer Docker produeix imatges Docker. Per tant, qualsevol dependència que es requereixi per a una aplicació concreta està present en aquesta imatge.

Ara, els contenidors Docker no són res més que la instància d’execució de Docker Image. Aquestes imatges es carreguen al Docker Hub (dipòsit Git per a Docker Images) que conté repositoris públics / privats.

Per tant, des dels dipòsits públics, també podeu extreure la vostra imatge i podeu penjar les vostres pròpies imatges al Docker Hub. A continuació, des de Docker Hub, diversos equips, com ara Garantia de qualitat o equips de producció, obtindran aquesta imatge i prepararan els seus propis contenidors. Aquests contenidors individuals es comuniquen entre ells a través d’una xarxa per dur a terme les accions necessàries i això no és res més que Docker Networking.

Per tant, podeu definir Docker Networking com un passatge de comunicació a través del qual tots els contenidors aïllats es comuniquen entre si en diverses situacions per realitzar les accions necessàries.

Quins creieu que són els objectius de Docker Networking?

Objectius de la xarxa Docker

Flexibilitat - Docker proporciona flexibilitat al permetre que qualsevol nombre d'aplicacions en diverses plataformes es comuniquin entre si.

Multiplataforma - Docker es pot utilitzar fàcilment en multiplataforma que funciona en diversos servidors amb l'ajuda de Docker Swarm Clusters.

Escalabilitat - Docker és una xarxa totalment distribuïda, que permet que les aplicacions creixin i escalin de manera individual, tot garantint el rendiment.

Descentralitzat - Docker utilitza una xarxa descentralitzada, que permet tenir les aplicacions esteses i altament disponibles. En el cas que de sobte falti un contenidor o un amfitrió a la vostra reserva de recursos, podeu publicar un recurs addicional o passar als serveis que encara estiguin disponibles.

Fàcil d'utilitzar - Docker facilita l’automatització del desplegament de serveis, facilitant-ne l’ús en el dia a dia.

Suport Docker ofereix suports pròpiament dits. Per tant, la possibilitat d’utilitzar Docker Enterprise Edition i obtenir tota la funcionalitat molt fàcil i senzilla fa que la plataforma Docker sigui molt fàcil d’utilitzar.

Per habilitar els objectius anteriors, cal que conegueu el model de xarxa de contenidors.

Voleu explorar diverses etapes de DevOps?

Model de xarxa de contenidors (CNM)

Abans de dir-vos què és exactament un model de xarxa de contenidors, permeteu-me informar-vos sobre Libnetwork que cal abans d’entendre CNM.

Libnetwork és una biblioteca Docker de codi obert que implementa tots els conceptes clau que conformen el CNM.

Tan, Model de xarxa de contenidors (CNM) normalitza els passos necessaris per proporcionar xarxa als contenidors que utilitzen diversos controladors de xarxa. CNM requereix un magatzem de valors de claus distribuït com la consola per emmagatzemar la configuració de xarxa.

El CNM té interfícies per a connectors IPAM i connectors de xarxa.

Les API de complements IPAM s’utilitzen per crear / eliminar agrupacions d’adreces i assignar / distribuir adreces IP de contenidors, mentre que les API de complements de xarxa s’utilitzen per crear / suprimir xarxes i afegir / eliminar contenidors de xarxes.

Un CNM s’ha basat principalment en 5 objectes: controlador de xarxa, controlador, xarxa, punt final i Sandbox.

Objectes del model de xarxa de contenidors

Controlador de xarxa: Proporciona el punt d'entrada a Libnetwork que exposa API senzilles per a Docker Engine per assignar i gestionar xarxes. Atès que Libnetwork admet diversos controladors integrats i remots, Network Controller permet als usuaris connectar un controlador concret a una xarxa determinada.

Conductor: És propietari de la xarxa i és responsable de gestionar-la mitjançant la participació de diversos controladors per satisfer diversos casos d’ús i escenaris de desplegament.

Xarxa: Proporciona connectivitat entre un grup de punts finals que pertanyen a la mateixa xarxa i que s’aïllen de la resta. Per tant, sempre que es creï o s’actualitzi una xarxa, es notificarà l’esdeveniment al controlador corresponent.

Punt final: Proporciona la connectivitat dels serveis exposats per un contenidor d'una xarxa amb altres serveis proporcionats per altres contenidors de la xarxa. Un punt final representa un servei i no necessàriament un contenidor concret, Endpoint també té un abast global dins d’un clúster.

Sandbox: Creada quan els usuaris sol·liciten crear un punt final a una xarxa. Un Sandbox pot tenir diversos extrems connectats a diferents xarxes que representen la configuració de xarxa del contenidor, com ara adreça IP, adreça MAC, rutes, DNS.

Aquests van ser els cinc objectes principals de CNM.

Ara, deixeu-me que us expliqui els diversos controladors de xarxa implicats en la xarxa Docker.

Voleu que DevOps Learning passi al següent nivell?

Controladors de xarxa

Hi ha principalment 5 controladors de xarxa: Bridge, Host, None, Overlay, Macvlan

Pont: La xarxa bridge és una xarxa interna predeterminada privada creada per Docker a l'amfitrió. Per tant, tots els contenidors obtenen una adreça IP interna i aquests contenidors poden accedir mútuament mitjançant aquesta IP interna. Les xarxes Bridge solen utilitzar-se quan les vostres aplicacions s’executen en contenidors independents que necessiten comunicar-se.

Amfitrió : Aquest controlador elimina l’aïllament de la xarxa entre l’amfitrió de la base i els contenidors de la base per utilitzar directament la xarxa de l’amfitrió. Així, amb això, no podreu executar diversos contenidors web al mateix amfitrió, al mateix port que el port ara és comú a tots els contenidors de la xarxa amfitrió.

Cap : En aquest tipus de xarxa, els contenidors no estan connectats a cap xarxa i no tenen accés a la xarxa externa ni a cap altre contenidor. Per tant, aquesta xarxa s’utilitza quanvoleu desactivar completament la pila de xarxa d'un contenidor i,només creeu un dispositiu loopback.

Superposició : Crea una xarxa privada interna que abasta tots els nodes que participen al clúster d'eixam. Per tant, les xarxes Overlay faciliten la comunicació entre un servei d’eixam i un contenidor autònom, o entre dos contenidors independents en diferents Docker Daemons.

Macvlan: Permet assignar una adreça MAC a un contenidor i fer que aparegui com a dispositiu físic a la vostra xarxa. A continuació, el dimoni Docker encamina el trànsit als contenidors per les seves adreces MAC. El controlador Macvlan és la millor opció quan s’espera que estigueu connectat directament a la xarxa física en lloc d’encaminar-lo a través de la pila de xarxa de l’amfitrió Docker.

Molt bé, per tant, aquesta era tota la teoria necessària per entendre Docker Networking. Ara, deixeu-me continuar i us mostraré pràcticament com es creen les xarxes i com es contenen els contenidors.

Mans amunt

Per tant, amb la suposició que tots heu instal·lat Docker als vostres sistemes, tinc un escenari per mostrar.

Suposem que voleu emmagatzemar el nom i l’identificador dels cursos per als quals necessiteu una aplicació web. Bàsicament, necessiteu un contenidor per a aplicacions web i necessiteu un contenidor més com a MySQL per al dorsal, aquest contenidor de MySQL hauria d’estar enllaçat amb el contenidor d’aplicacions web.

Què tal si executaria pràcticament l'exemple esmentat anteriorment?

Passos implicats:

  • Inicialitzeu Docker Swarm per formar un clúster Swarm.
  • Creeu una xarxa de superposició
  • Creeu serveis per a aplicacions web i MySQL
  • Connecteu les aplicacions a través de la xarxa

Comencem!

Pas 1: Inicialitzeu Docker Swarm a la màquina.

docker swarm init --advertise-addr 192.168.56.101

El senyalador –advertise-addr configura el node gestor per publicar la seva adreça com a 192.168.56.101. Els altres nodes de l’eixam han de poder accedir al gestor des de l’adreça IP.

Pas 2: Ara, si voleu unir-vos a aquest node gestor al node treballador, copieu l’enllaç que obteniu quan inicialitzeu l’eixam al node treballador.
Pas 3: Creeu una xarxa superposada.

docker network create -d overlay myoverlaynetwork

On myoverlay és el nom de la xarxa i -d permet que Docker Daemon s'executi en segon pla.

Pas 4.1: Creeu un servei webapp1 i utilitzeu la xarxa que heu creat per desplegar aquest servei al clúster d'eixam.

servei docker create --name webapp1 -d --network myoverlaynetwork -p 8001: 80 hshar / webapp

On -pés per a reenviament de ports,hsharés el nom del compte a Docker Hub i webapp és el nom de l'aplicació web ja present a Docker Hub.

Pas 4.2: Ara, comproveu si el servei està creat o no.

servei docker ls

què són el xef i el titella

Pas 5.1: Ara, creeu un servei MySQL i utilitzeu la xarxa que heu creat per desplegar el servei a través del clúster d’eixam.

servei docker create --name mysql -d --network myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


Pas 5.2: Ara, comproveu si el servei està creat o no.

servei docker ls

Pas 6.1: Després, comproveu quin contenidor s’executa al node mestre i aneu al contenidor hshar / webapp.

acoblador ps

Pas 6.2: Per tant, podeu veure que només el servei d’aplicacions web es troba al node gestor. Per tant, accediu al contenidor webapp.

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

L'ordre docker ps mostrarà els dos contenidors amb el seu identificador de contenidor respectiu. La segona ordre habilitarà aquest contenidor en un mode interactiu.

Pas 7: Ara, canvieu el nom $ servern de localhost a mysql i la contrasenya $ de '' 'a' edureka ', i també canvieu tots els emplenaments de la base de dades necessaris i deseu el fitxer index.php mitjançant la drecera de teclat Ctrl + x i després y per desar i premeu Retorn.

Pas 8: Ara, aneu al contenidor mysql que s’executa en un altre node.

docker exec -it container_id bash

Pas 9: Un cop entreu al contenidor mysql, introduïu les ordres següents per utilitzar la base de dades a MySQL.

Pas 9.1: Obteniu accés per utilitzar el contenidor mysql.

mysql -u arrel -pedureka

On -u representa l'usuari i -p és la contrasenya del vostre equip.

Pas 9.2: Creeu una base de dades a mysql que s'utilitzarà per obtenir dades de webapp1.

CREA HandsOn DE LA BASE DE DADES

Pas 9.3: Utilitzeu la base de dades creada.

USEU HandsOn

Pas 9.4: Creeu una taula en aquesta base de dades que s’utilitzarà per obtenir dades de webapp1.

CREA UNA TAULA detalls del curs (nom_curs VARCHAR (10), id_curs VARCHAR (11))

Pas 9.5: Ara, també sortiu de MySQL i del contenidor mitjançant l'ordre sortir .

Pas 10: Aneu al navegador i introduïu l'adreça com a localhost: 8001 / index.php . Això obrirà la vostra aplicació web. Ara, introduïu els detalls dels cursos i feu clic a Envia consulta .

Pas 11: Un cop feu clic a Envia consulta, aneu al node on s’executa el vostre servei MySQL i, a continuació, aneu al contenidor.

docker exec -it container_id bash mysql -u root -pedureka USA les taules SHOW HandsOn seleccioneu * entre els detalls del curs

Això us mostrarà la sortida de tots els cursos, dels quals heu emplenat els detalls.

Aquí acabo el meu bloc de Docker Networking. Espero que us hagi agradat aquest missatge. Podeu comprovar-ho altres blocs també a la sèrie, que tracta dels conceptes bàsics de Docker.

Si heu trobat aquest bloc Docker Container rellevant, consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 450.000 estudiants satisfets repartits per tot el món. El curs de formació en certificació Edureka DevOps ajuda els estudiants a adquirir experiència en diversos processos i eines DevOps com Puppet, Jenkins, Docker, Nagios, Ansible i GIT per automatitzar diversos passos en SDLC.

Cerqueu certificació a DevOps?

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondré.