Docker Networking - prozkoumejte, jak kontejnery navzájem komunikují

Naučte se vše o síťových schopnostech Dockeru s porozuměním modelu síťové nádoby a jeho implementaci s praktickým cvičením.

V dnešním světě se podniky začaly zajímat o kontejnerizaci, která vyžaduje správné síťové dovednosti pro správnou konfiguraci architektury kontejneru, a tím zavádí koncept Docker Networking.

V tomto blogu o Docker Networking projdete následující témata:





Co je Docker?

Abychom porozuměli Dockeru, potřebujete vědět o historii, jak byly aplikace nasazeny dříve, a o tom, jak jsou aplikace nasazovány pomocí kontejnerů nyní.

Nasazení aplikací starým a novým způsobem - Docker Networking - Edureka



Jak vidíte ve výše uvedeném diagramu, starý způsob měl aplikace na hostiteli.Takže n počet aplikací sdílí knihovny přítomné v tomto operačním systému.Ale s kontejnerizací bude operační systém obsahovat jádro, což je jediná věc, která bude společná pro všechny aplikace.Aplikace tedy nemohou navzájem přistupovat ke knihovnám.

Tak, Přístavní dělník jednoduše řečeno je otevřená platforma pro vývoj, přepravu a spouštění aplikací, která umožňuje uživateli oddělit aplikace od infrastruktur pomocí kontejnery rychle dodávat software.

Jak tedy tyto kontejnery vzájemně komunikují v různých situacích?



To přichází prostřednictvím Docker Networking.

Docker Networking

Než se hlouběji ponořím do Docker Networking, dovolte mi ukázat vám pracovní postup Dockeru.

Jak vidíte na výše uvedeném diagramu. Vývojář zapíše kód, který stanoví požadavky na aplikaci nebo závislosti ve snadno napsatelném souboru Docker a tento soubor Docker vytvoří obrázky Docker. Takže na tomto obrázku jsou přítomny jakékoli závislosti vyžadované pro konkrétní aplikaci.

Nyní Docker Containers nejsou nic jiného než běhová instance Docker Image. Tyto obrázky se nahrají do Docker Hubu (úložiště Git pro obrázky Dockeru), které obsahuje veřejné / soukromé úložiště.

Takže z veřejných úložišť můžete také vytáhnout svůj obrázek a můžete nahrát své vlastní obrázky do Docker Hubu. Potom z Docker Hubu různé týmy, jako je Quality Assurance nebo Production, vytáhnou tento obrázek a připraví vlastní kontejnery. Tyto jednotlivé kontejnery vzájemně komunikují prostřednictvím sítě za účelem provedení požadovaných akcí, a to není nic jiného než Docker Networking.

Takže můžete definovat Docker Networking jako komunikační průchod, kterým všechny izolované kontejnery vzájemně komunikují v různých situacích, aby provedly požadované akce.

Jaké jsou podle vás cíle Docker Networking?

Cíle Docker Networking

jak deklarovat řadu objektů v Javě

Flexibilita - Docker poskytuje flexibilitu tím, že umožňuje libovolnému počtu aplikací na různých platformách vzájemně komunikovat.

Cross-Platform - Docker lze snadno použít na různých platformách, které fungují na různých serverech pomocí Docker Swarm Clusters.

Škálovatelnost - Docker je plně distribuovaná síť, která aplikacím umožňuje individuální růst a škálování při současném zajištění výkonu.

Decentralizované - Docker používá decentralizovanou síť, která umožňuje mít aplikace rozšířené a vysoce dostupné. V případě, že ve vašem fondu prostředků náhle chybí kontejner nebo hostitel, můžete buď vyvolat další prostředek, nebo předat služby, které jsou stále k dispozici.

Uživatelsky přívětivý - Docker usnadňuje automatizaci nasazování služeb a usnadňuje jejich používání v každodenním životě.

Podpěra, podpora - Docker nabízí podporu ihned po vybalení. Díky schopnosti používat Docker Enterprise Edition a získat všechny funkce velmi snadno a přímočaře je používání platformy Docker velmi snadné.

Chcete-li povolit výše uvedené cíle, potřebujete něco známého jako model kontejnerové sítě.

Chcete prozkoumat různé fáze DevOps?

Model kontejnerové sítě (CNM)

Než vám řeknu, co přesně je model kontejnerové sítě, dovolte mi, abych vás informoval o Libnetwork, která je potřebná, než pochopíte CNM.

Libnetwork je open source knihovna Docker, která implementuje všechny klíčové koncepty, které tvoří CNM.

Tak, Model kontejnerové sítě (CNM) standardizuje kroky potřebné k zajištění sítě pro kontejnery pomocí více síťových ovladačů. Pro uložení konfigurace sítě vyžaduje CNM úložiště distribuovaných párů klíč – hodnota, jako je konzole.

CNM má rozhraní pro pluginy IPAM a síťové pluginy.

Rozhraní API modulu plug-in IPAM se používají k vytváření / mazání fondů adres a přidělování / uvolňování IP adres kontejneru, zatímco rozhraní API síťového pluginu se používají k vytváření / mazání sítí a přidávání / odebírání kontejnerů ze sítí.

CNM stavěl hlavně na 5 objektech: Network Controller, Driver, Network, Endpoint a Sandbox.

Objekty síťového modelu kontejneru

Síťový řadič: Poskytuje vstupní bod do Libnetwork, který zpřístupňuje jednoduchá rozhraní API pro Docker Engine pro přidělování a správu sítí. Vzhledem k tomu, že Libnetwork podporuje více vestavěných a vzdálených ovladačů, umožňuje síťový ovladač uživatelům připojit konkrétní ovladač k dané síti.

Řidič: Vlastní síť a odpovídá za správu sítě tím, že se účastní více ovladačů, aby uspokojily různé případy použití a scénáře nasazení.

Síť: Poskytuje připojení mezi skupinou koncových bodů, které patří do stejné sítě a izolují se od ostatních. Takže kdykoli je síť vytvořena nebo aktualizována, bude o události informován příslušný ovladač.

Koncový bod: Poskytuje připojení pro služby vystavené kontejnerem v síti s dalšími službami poskytovanými jinými kontejnery v síti. Koncový bod představuje službu a ne nutně konkrétní kontejner, koncový bod má globální rozsah také v rámci klastru.

Pískoviště: Vytvořeno, když uživatelé požadují vytvoření koncového bodu v síti. Sandbox může mít více koncových bodů připojených k různým sítím představujícím síťovou konfiguraci kontejneru, jako je IP-adresa, MAC-adresa, trasy, DNS.

To tedy bylo 5 hlavních objektů CNM.

Nyní vám řeknu různé síťové ovladače zapojené do sítí Docker.

Chcete posunout učení DevOps na vyšší úroveň?

Síťové ovladače

Existuje hlavně 5 síťových ovladačů: Bridge, Host, None, Overlay, Macvlan

Most: Síť mostu je výchozí soukromá interní síť vytvořená ukotvitelným počítačem na hostiteli. Všechny kontejnery tedy získají interní adresu IP a tyto kontejnery k sobě budou mít přístup pomocí této interní adresy IP. Sítě Bridge se obvykle používají, když vaše aplikace běží v samostatných kontejnerech, které potřebují komunikovat.

základy serveru SQL pro začátečníky

Hostitel : Tento ovladač odstraní síťovou izolaci mezi hostitelem ukotvitelného panelu a kontejnery ukotvitelného panelu, aby bylo možné přímo použít síť hostitele. Takže s tímto nebudete moci spustit více webových kontejnerů na stejném hostiteli, na stejném portu, jako je port, je nyní společný pro všechny kontejnery v hostitelské síti.

Žádný : V tomto druhu sítě nejsou kontejnery připojeny k žádné síti a nemají žádný přístup k externí síti nebo jiným kontejnerům. Tato síť se tedy používá, kdyžchcete úplně zakázat síťový zásobník na kontejneru avytvořit pouze zařízení pro zpětnou smyčku.

Překrytí : Vytvoří interní soukromou síť, která se bude rozprostírat přes všechny uzly účastnící se rojového klastru. Sítě Overlay tedy usnadňují komunikaci mezi rojovou službou a samostatným kontejnerem nebo mezi dvěma samostatnými kontejnery na různých Docker Daemons.

Macvlan: Umožňuje vám přiřadit MAC adresu kontejneru, aby vypadal jako fyzické zařízení ve vaší síti. Poté démon Docker směruje provoz na kontejnery podle jejich MAC adres. Ovladač Macvlan je nejlepší volbou, pokud se od vás očekává přímé připojení k fyzické síti, nikoli směrování přes síťový zásobník hostitele Docker.

Dobře, tak to byla celá teorie potřebná k pochopení Docker Networking. Nyní mi dovolte jít dál a ukázat vám prakticky, jak jsou vytvářeny sítě a kontejnery spolu komunikují.

Hands-On

Takže s předpokladem, že jste si do svých systémů nainstalovali Docker všichni, musím předvést scénář.

Předpokládejme, že chcete uložit název kurzu a ID kurzu, pro které budete potřebovat webovou aplikaci. V podstatě potřebujete jeden kontejner pro webovou aplikaci a potřebujete ještě jeden kontejner jako MySQL pro backend, který by měl být propojen s kontejnerem webové aplikace.

Co kdybych provedl výše uvedený příklad prakticky.

Příslušné kroky:

  • Inicializujte Docker Swarm a vytvořte shluk Swarm.
  • Vytvořte překryvnou síť
  • Vytvářejte služby pro webové aplikace i MySQL
  • Připojte aplikace prostřednictvím sítě

Začněme!

Krok 1: Inicializujte Docker Swarm na stroji.

docker swarm init --advertise-addr 192.168.56.101

Příznak –advertise-addr nakonfiguruje uzel správce k publikování jeho adresy jako 192.168.56.101. Ostatní uzly v roji musí mít přístup ke správci na IP adrese.

Krok 2: Nyní, pokud se chcete připojit k tomuto uzlu správce k uzlu pracovníka, zkopírujte odkaz, který získáte při inicializaci roje na uzlu pracovníka.
Krok 3: Vytvořte překryvnou síť.

docker network create -d overlay myoverlaynetwork

Kde myoverlay je název sítě a -d umožňuje Docker Daemon běžet na pozadí.

Krok 4.1: Vytvořte webapp1 služby a pomocí sítě, kterou jste vytvořili, k nasazení této služby přes rojový cluster.

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

Kde -pje pro přesměrování portů,hsharje název účtu v Docker Hubu a webapp je název webové aplikace, která je již v Docker Hubu.

Krok 4.2: Nyní zkontrolujte, zda je služba vytvořena nebo ne.

docker service ls

Krok 5.1: Nyní vytvořte službu MySQL a použijte síť, kterou jste vytvořili, k nasazení služby přes rojový klastr.

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


Krok 5.2: Nyní zkontrolujte, zda je služba vytvořena nebo ne.

docker service ls

Krok 6.1: Poté zkontrolujte, který kontejner běží na hlavním uzlu, a přejděte do kontejneru hshar / webapp.

docker ps

Krok 6.2: Takže vidíte, že v uzlu správce je pouze služba webapp. Takže se dostaňte do kontejneru webapp.

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

výuka krok za krokem

Příkaz docker ps vypíše oba vaše kontejnery s příslušným ID kontejneru. Druhý příkaz umožní tento kontejner v interaktivním režimu.

Krok 7: Nyní změňte název serveru $ z localhost na mysql a heslo $ z „“ na „edureka“ a také změňte všechny požadované údaje v databázi a uložte soubor index.php pomocí klávesové zkratky Ctrl + x a poté y uložte a stiskněte enter.

Krok 8: Nyní přejděte do kontejneru mysql, který běží na jiném uzlu.

docker exec -it container_id bash

Krok 9: Jakmile vstoupíte do kontejneru mysql, zadejte níže uvedené příkazy pro použití databáze v MySQL.

Krok 9.1: Získejte přístup k používání kontejneru mysql.

mysql -u root -pedureka

Kde -u představuje uživatele a -p je heslo vašeho zařízení.

Krok 9.2: Vytvořte databázi v mysql, která bude použita k získání dat z webapp1.

VYTVOŘIT DATABÁZE HandsOn

Krok 9.3: Použijte vytvořenou databázi.

POUŽÍT HandsOn

Krok 9.4: V této databázi vytvořte tabulku, která bude použita k získání dat z webapp1.

CREATE TABLE course_details (název_kurzu VARCHAR (10), název_kursu VARCHAR (11))

Krok 9.5: Nyní pomocí příkazu ukončete MySQL a kontejner výstup .

Krok 10: Přejděte do svého prohlížeče a zadejte adresu jako localhost: 8001 / index.php . Tím se otevře vaše webová aplikace. Nyní zadejte podrobnosti o kurzech a klikněte na Odeslat dotaz .

Krok 11: Jakmile kliknete na Odeslat dotaz, přejděte do uzlu, ve kterém běží vaše služba MySQL, a poté přejděte dovnitř kontejneru.

docker exec -it container_id bash mysql -u root -pedureka POUŽÍT tabulky HandsOn SHOW vyberte * z course_details

Zobrazí se výstup všech kurzů, které jste vyplnili v podrobnostech.

Zde končím svůj blog Docker Networking. Doufám, že se vám tento příspěvek líbil. Můžeš zkontrolovat další blogy v seriálu, který pojednává o základech Dockeru.

Pokud vám tento blog Docker Container připadá relevantní, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 450 000 spokojených studentů rozložených po celém světě. Kurz Edureka DevOps Certification Training pomáhá studentům získat odborné znalosti v různých procesech a nástrojích DevOps, jako jsou Puppet, Jenkins, Docker, Nagios, Ansible a GIT pro automatizaci více kroků v SDLC.

Hledáte certifikaci v DevOps?

Máte na mě otázku? Uveďte to prosím v sekci komentáře a ozvu se vám.