Docker Networking - Fedezze fel, hogyan kommunikálnak a konténerek egymással

Tudjon meg mindent a Docker hálózati képességeiről, megértve a konténer hálózati modelljét és annak gyakorlati megvalósításával.

A mai világban a vállalkozások lelkesedtek a konténerezés iránt, amelyhez erős hálózati ismeretekre van szükség a konténerarchitektúra megfelelő konfigurálásához, és ezáltal bevezetjük a Docker Networking fogalmát.



A Docker Networking ezen a blogján a következő témákat fogja áttekinteni:



Mi az a Docker?

A Docker megértéséhez ismernie kell az alkalmazások korábban történő telepítésének előzményeit, majd azt, hogy miként telepítik az alkalmazásokat a konténerek segítségével.

Alkalmazások telepítése régi és új módszerekkel - Docker Networking - Edureka



Amint a fenti ábrán láthatja, a régi módon voltak alkalmazások a gazdagépen.Tehát n számú alkalmazás osztja meg az adott operációs rendszerben lévő könyvtárakat.De a tárolással az operációs rendszernek lesz egy rendszermagja, ez az egyetlen dolog, ami közös lesz az összes alkalmazás között.Tehát az alkalmazások nem férhetnek hozzá egymás könyvtáraihoz.

Így, Dokkmunkás egyszerűsítve egy nyílt platform az alkalmazások fejlesztésére, szállítására és futtatására, amely lehetővé teszi a felhasználó számára, hogy az alkalmazásokat elkülönítse az infrastruktúrától az konténerek hogy gyorsan szállítson szoftvert.

Szóval, hogyan kommunikálnak egymással ezek a konténerek különböző helyzetekben?



Nos, ez a Docker Networkingen keresztül jön.

hogyan kell használni a csomagokat a java-ban

Docker Networking

Mielőtt belemerülnék a Docker Networkingbe, hadd mutassam meg a Docker munkafolyamatát.

Amint a fenti ábrán láthatja. A fejlesztő egy könnyen írható Docker fájlba ír egy kódot, amely meghatározza az alkalmazás követelményeit vagy a függőségeket, és ez a Docker fájl Docker képeket állít elő. Tehát bármilyen függőség szükséges egy adott alkalmazáshoz, jelen van ebben a képben.

A Docker Containers nem más, mint a Docker Image futásidejű példánya. Ezeket a képeket feltöltjük a Docker Hub-ra (Git-tárház a Docker Images számára), amely nyilvános / magán tárolókat tartalmaz.

Tehát a nyilvános adattárakból húzhatja ki a képét, és feltöltheti saját képeit a Docker Hub-ra. Ezután a Docker Hubból különféle csapatok, például a Minőségbiztosítás vagy a Gyártás csapatai húzzák ezt a képet, és elkészítik saját tárolóikat. Ezek az egyes tárolók egy hálózaton keresztül kommunikálnak egymással a szükséges műveletek végrehajtása érdekében, és ez nem más, mint a Docker Networking.

Tehát meghatározhatja a Docker Networking kommunikációs folyosóként, amelyen keresztül az összes elkülönített tároló különféle helyzetekben kommunikál egymással a szükséges műveletek végrehajtása érdekében.

Mit gondolsz, mi a Docker Networking célja?

A Docker Networking céljai

Rugalmasság - A Docker rugalmasságot biztosít azáltal, hogy a különféle platformokon tetszőleges számú alkalmazás kommunikálhat egymással.

Keresztplatform - A Docker könnyen használható olyan platformokon, amelyek a Docker Swarm Clusters segítségével különböző szervereken működnek.

Méretezhetőség - A Docker egy teljesen elosztott hálózat, amely lehetővé teszi az alkalmazások egyedi növekedését és méretezését a teljesítmény biztosítása mellett.

Decentralizált - A Docker decentralizált hálózatot használ, amely lehetővé teszi az alkalmazások terjedését és magas szintű elérhetőségét. Abban az esetben, ha egy tároló vagy gazdagép hirtelen hiányzik az erőforráskészletéből, vagy előhozhat egy további erőforrást, vagy átadhatja a még elérhető szolgáltatásokat.

Felhasználóbarát - A Docker megkönnyíti a szolgáltatások telepítésének automatizálását, így a mindennapi életben könnyen használhatók.

Támogatás - A Docker dobozon kívüli támogatásokat kínál. Tehát, a Docker Enterprise Edition használatának képessége és az összes funkció nagyon egyszerű és egyszerű megszerzése lehetővé teszi a Docker platform használatát nagyon egyszerűvé.

A fenti célok engedélyezéséhez szüksége van valamire, amelyet Container Network Model néven ismerünk.

Szeretne felfedezni különféle DevOps szakaszokat?

Konténer hálózati modell (CNM)

Mielőtt elmondanám, mi is pontosan a konténer hálózati modell, hadd röviden tájékoztassam a Libnetwork-ről, amelyre szükség van, mielőtt megértenéd a CNM-et.

A Libnetwork egy nyílt forráskódú Docker könyvtár, amely a CNM-et alkotó összes kulcsfontosságú fogalmat megvalósítja.

Így, Konténer hálózati modell (CNM) szabványosítja a több hálózati illesztőprogramot használó konténerek hálózati biztosításához szükséges lépéseket. A CNM-nek elosztott kulcsértékű tárolóra van szüksége, például konzolra a hálózati konfiguráció tárolásához.

A CNM rendelkezik interfészekkel az IPAM bővítményekhez és a hálózati bővítményekhez.

Az IPAM plugin API-kat a címkészletek létrehozására / törlésére és a tároló IP-címek kiosztására / elosztására használják, míg a hálózati plugin API-kat hálózatok létrehozására / törlésére és a konténerek hálózatokból történő hozzáadására / eltávolítására használják.

A CNM főként 5 objektumra épült: Hálózati vezérlő, Illesztőprogram, Hálózat, Végpont és Sandbox.

Konténer hálózati modell objektumok

Hálózati vezérlő: Biztosítja a Libnetwork belépési pontját, amely egyszerű API-kat tesz lehetővé a Docker Engine számára a hálózatok kiosztására és kezelésére. Mivel a Libnetwork több beépített és távoli illesztőprogramot támogat, a Network Controller lehetővé teszi a felhasználók számára, hogy egy adott illesztőprogramot csatoljanak egy adott hálózathoz.

Sofőr: Tulajdonosa a hálózatnak, és felelős a hálózat kezeléséért úgy, hogy több illesztőprogram vesz részt a különféle felhasználási esetek és telepítési forgatókönyvek kielégítésében.

Hálózat: Kapcsolatot biztosít azon végpontok csoportja között, amelyek ugyanahhoz a hálózathoz tartoznak, és elkülönülnek a többitől. Tehát, amikor hálózat jön létre vagy frissül, a megfelelő illesztőprogramot értesítik az eseményről.

Végpont: Biztosítja a kapcsolatot egy hálózatban lévő tároló által kitett szolgáltatások és a hálózat más tárolói által nyújtott egyéb szolgáltatások között. A végpont egy szolgáltatást, és nem feltétlenül egy adott tárolót képvisel, a végpontnak globális hatóköre van a fürtön belül is.

Homokozó: Akkor jött létre, amikor a felhasználók végpont létrehozását kérik a hálózaton. A Sandbox több végpontot is csatolhat különböző hálózatokhoz, amelyek a konténer hálózati konfigurációját képviselik, például IP-címet, MAC-címet, útvonalakat és DNS-t.

Tehát ez volt a CNM 5 fő tárgya.

Most hadd mondjam el a Docker hálózatépítésében részt vevő különféle hálózati illesztőprogramokat.

Szeretne egy új szintre emelni a DevOps tanulást?

Hálózati illesztőprogramok

Főleg 5 hálózati meghajtó létezik: Bridge, Host, None, Overlay, Macvlan

Híd: A híd hálózat egy alapértelmezett privát belső hálózat, amelyet a docker hozott létre a gazdagépen. Tehát minden tároló kap egy belső IP-címet, és ezek a tárolók hozzáférhetnek egymáshoz, ezzel a belső IP-vel. A Bridge hálózatokat általában akkor használják, ha az alkalmazásai önálló tárolókban futnak, amelyeknek kommunikálniuk kell.

Házigazda : Ez az illesztőprogram eltávolítja a dokkoló-állomás és a dokkoló-tárolók közötti hálózati elszigetelést, hogy közvetlenül használhassa a gazdagép hálózatát. Tehát ezzel nem fog tudni több webes tárolót futtatni ugyanazon a gazdagépen, ugyanazon a porton, mint a port, amely a gazda hálózat összes tárolója számára közös.

Egyik sem : Ebben a fajta hálózatban a tárolók nincsenek csatlakoztatva egyetlen hálózathoz, és nincs hozzáférésük a külső hálózathoz vagy más tárolókhoz. Tehát, ezt a hálózatot akkor használják, amikorteljesen le akarja tiltani a hálózati verem egy tárolón, éscsak loopback eszközt hozzon létre.

Overlay : Belső magánhálózatot hoz létre, amely átfogja az összes fürtben résztvevő csomópontot. Tehát az overlay hálózatok megkönnyítik a kommunikációt egy raj szolgáltatás és egy önálló konténer, vagy két különálló konténer között a különböző Docker démonokon.

Macvlan: Lehetővé teszi MAC-cím hozzárendelését egy tárolóhoz, így fizikai eszközként jelenik meg a hálózaton. Ezután a Docker démon MAC-címeikkel irányítja a forgalmat a konténerekhez. A Macvlan illesztőprogram a legjobb választás, ha várhatóan közvetlenül csatlakozik a fizikai hálózathoz, nem pedig a Docker gazdagép hálózati veremén keresztül.

Rendben, tehát ennyi elmélet kellett a Docker Networking megértéséhez. Most hadd lépjek tovább, és gyakorlatilag megmutatom, hogyan jönnek létre a hálózatok és a tárolók kommunikálnak egymással.

Hands-On

Tehát feltételezve, hogy mindannyian telepítettétek a Dockert a rendszeretekre, van egy bemutatandó forgatókönyvem.

Tegyük fel, hogy tárolni szeretné a tanfolyamok nevét és tanfolyamazonosítóját, amelyhez webalkalmazásra lesz szükség. Alapvetően egy tárolóra van szükség a webalkalmazásokhoz, és még egy tárolóra van szükség MySQL-ként a háttérképhez, amelyet a MySQL-tárolónak össze kell kapcsolnia a webalkalmazás-tárolóval.

Mi lenne, ha a fenti példát gyakorlatilag végrehajtanám.

Bevont lépések:

  • Inicializálja a Docker Swarmot, hogy Swarm-fürtöt képezzen.
  • Hozzon létre egy overlay hálózatot
  • Hozzon létre szolgáltatásokat mind a webalkalmazásokhoz, mind a MySQL-hez
  • Csatlakoztassa az alkalmazásokat a hálózaton keresztül

Lássunk neki!

1. lépés: Inicializálja a Docker Swarmot a gépen.

dokkoló raj init - advertise-addr 192.168.56.101

Az –advertise-addr jelző úgy konfigurálja a kezelő csomópontot, hogy 192.168.56.101 néven tegye közzé a címét. A raj többi csomópontjának képesnek kell lennie a menedzser elérésére az IP-címen.

2. lépés: Most, ha csatlakozni kíván ehhez a kezelő csomóponthoz a munkás csomóponthoz, másolja azt a linket, amelyet a raj inicializálásakor kapott a munkás csomóponton.
3. lépés: Hozzon létre egy overlay hálózatot.

docker hálózat létrehozása -d overlay myoverlaynetwork

Ahol a myoverlay a hálózati név, és a -d lehetővé teszi a Docker Daemon számára a háttérben történő futtatást.

hogyan kell használni a szkenner osztályt

4.1 lépés: Hozzon létre egy webapp1 szolgáltatást, és használja a létrehozott hálózatot a szolgáltatás telepítéséhez a raj fürtön.

docker szolgáltatás létrehozása --name webapp1 -d - hálózat myoverlaynetwork -p 8001: 80 hshar / webapp

Ahol -pkikötői továbbításra szolgál,hshara fiók neve a Docker Hubon, a webapp pedig a Docker Hubon már meglévő webalkalmazás neve.

4.2 lépés: Most ellenőrizze, hogy létrejött-e a szolgáltatás vagy sem.

melyek a c ++ névterei
dokkoló szolgáltatás

5.1 lépés: Most hozzon létre egy MySQL szolgáltatást, és a létrehozott hálózaton keresztül telepítse a szolgáltatást a raj fürtjére.

docker service create --name mysql -d --net myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


5.2. Lépés: Most ellenőrizze, hogy létrejött-e a szolgáltatás vagy sem.

dokkoló szolgáltatás

6.1 lépés: Ezt követően ellenőrizze, hogy melyik tároló fut a fő csomóponton, és menjen be a hshar / webapp tárolóba.

dokkoló ps

6.2 lépés: Tehát láthatja, hogy csak a webapp szolgáltatás van a kezelő csomóponton. Tehát lépj be a webapp tárolóba.

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

A dokkoló ps parancs mindkét tárolót felsorolja a megfelelő tárolóazonosítóval. A második parancs interaktív módban engedélyezi a tárolót.

7. lépés: Most módosítsa a $ servername-t localhost-ról mysql-re, a $ jelszót pedig “” ”-ról“ edureka ”-ra, és változtassa meg az összes szükséges adatbázist és töltse le az index.php fájlt a Ctrl + x billentyűparancs segítségével, majd ezek után. y mentéshez, és nyomja meg az Enter billentyűt.

8. lépés: Most menjen be a mysql tárolóba, amely egy másik csomóponton fut.

dokkoló exec -it container_id bash

9. lépés: Miután belépett a mysql konténerbe, írja be az alábbi parancsokat az adatbázis használatához a MySQL-ben.

9.1 lépés: Hozzáférés a mysql tároló használatához.

mysql -u gyökér -pedureka

Ahol az -u a felhasználót, a -p pedig a számítógép jelszavát jelenti.

9.2 lépés: Hozzon létre egy adatbázist a mysql-ben, amelyet felhasználni fog a webapp1 adatainak megszerzéséhez.

LÉTREHOZ ADATBÁZIS HandsOn

9.3 lépés: Használja a létrehozott adatbázist.

HASZNÁLJA a HandsOn gombot

9.4 lépés: Hozzon létre egy táblázatot ebben az adatbázisban, amelyet felhasználni fog a webapp1 adatainak megszerzéséhez.

Táblázat létrehozása tanfolyam_részletek (tanfolyam_neve VARCHAR (10), tanfolyam_azonosító VARCHAR (11))

9.5 lépés: Most a parancs segítségével lépjen ki a MySQL-ből és a tárolóból is kijárat .

10. lépés: Lépjen a böngészőjébe, és írja be a címet localhost: 8001 / index.php . Ez megnyitja a webalkalmazást. Most írja be a kurzusok adatait, majd kattintson a gombra Küldje be a lekérdezést .

11. lépés: Miután rákattintott a Lekérdezés elküldése gombra, lépjen arra a csomópontra, amelyben a MySQL szolgáltatása fut, majd menjen a tárolóba.

docker exec -it container_id bash mysql -u root -pedureka HASZNÁLJA a HandsOn SHOW táblákat válassza ki a * lehetőséget a kurzus_részletek közül

Ez megmutatja az összes tanfolyam kimenetét, amelynek részleteit kitöltötte.

Itt fejezem be a Docker Networking blogomat. Remélem, élvezték ezt a bejegyzést. Ellenőrizheted egyéb blogok a sorozatban is, amelyek a Docker alapjaival foglalkoznak.

Ha relevánsnak találta ezt a Docker Container blogot, nézze meg a az Edureka, egy megbízható online tanulási társaság, amelynek több mint 450 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka DevOps tanúsító tanfolyam segít a tanulóknak szaktudást szerezni a különféle DevOps folyamatokban és olyan eszközökben, mint például a Báb, a Jenkins, a Docker, a Nagios, az Ansible és a GIT az SDLC több lépésének automatizálásában.

Tanúsítványt keres a DevOps-ban?

Van egy kérdésem? Kérjük, említse meg a megjegyzés rovatban, és visszajövök.