GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Využijte Container Orchestration v tomto výukovém programu Docker Swarm

Přemýšleli jste někdy o tom, zda je možné orchestrovat kontejnery přímo s Dockerem namísto Kubernetes? Docker Swam může být řešením, které hledáte, a jste na správné cestě!

V tomto kurzu se naučíte, jak spravovat více kontejnerů Docker pomocí Docker Swarm.

Čtěte dál a začněte orchestrovat!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:

  • Tři instance EC2 běžící na Ubuntu 20.04.3 LTS.
  • Docker nainstalovaný na všech instancích EC2 – Tento výukový program používá verzi 20.10.12.

Vytváření a rozmístění kontejnerů na docker Swarm

Docker Swarm je virtuální nebo fyzický strojový cluster, který spouští aplikace Docker. Režim Swarm poskytuje Dockeru integrované možnosti orchestrace kontejnerů.

Než však začnete spravovat více kontejnerů, budete potřebovat různé systémy/stroje (instance AWS EC2).

Před pokračováním ve výukovém programu se můžete naučit klíčové pojmy v režimu roje.

Za předpokladu, že máte nastavené instance EC2:

1. Otevřete webový prohlížeč a přihlaste se do svého řídicího panelu EC2. Zobrazte stránku souhrnu informací o jedné z vašich instancí EC2 a poznamenejte si veřejnou adresu IPv4, jak je uvedeno níže.

2. Dále otevřete svůj terminál a spusťte níže uvedený příkaz k vytvoření manažerského uzlu v jedné z vašich instancí EC2. Ujistěte se, že jste nahradili 18.237.102.75 s veřejnou IPv4 adresou vaší instance EC2, kterou jste si dříve poznamenali (krok jedna). Níže uvedený příkaz inicializuje instanci jako uzel správce roje Docker.

Manažerský uzel přiděluje IP adresy úlohám/kontejnerům, přiřazuje úlohy uzlům, vydává příkazy pro spuštění pracovních uzlů.

Uzel správce provádí funkce orchestrace a správy clusteru Docker Swarm. Ale nebojte se. Postupně se v tomto tutoriálu dozvíte o pracovních uzlech.

sudo docker swarm init --advertise-addr 18.237.102.75

Všimněte si podobného příkazu uvedeného níže.

3. Spusťte příkaz, který jste si dříve poznamenali (krok dva), abyste se připojili k roji jako pracovní uzel. Pracovní uzel přijímá a provádí úkoly podle pokynů manažerských uzlů.

4. Nyní spusťte docker node příkaz níže pro kontrolu všech uzlů přítomných v konkrétním roji. Pamatujte, že níže uvedený příkaz může spustit pouze manažerský uzel.

sudo docker node ls

5. Opakováním druhého kroku vytvořte uzel správce v jiné instanci EC2.

Pokud již svůj token připojení nemáte, můžete spustit příkaz níže v uzlu správce a zobrazit token připojení.

sudo docker swarm join-token worker

6. Dále spusťte níže uvedenou docker service příkaz k vytvoření služby spravované v Docker Swarm. V tomto tutoriálu nasadíte prostý obrázek NGINX.

docker service níže uvedený příkaz provede následující:

  • Vytvořte službu s názvem (--name ) nginx-service , ale bude fungovat jakýkoli název.
  • Uveďte počet --replicas vaší aplikace/kontejneru, který chcete. V tomto případě je hodnota replik nastavena na tři (3 ). Repliky poskytují vysokou dostupnost vaší aplikace a eliminují prostoje. Docker sdílí repliky mezi tři dostupné uzly při vytváření replik pro službu.
  • Uveďte port (-p 80:80 ), poté uveďte název obrázku, který se má použít (nginx:latest ).
sudo docker service create --name nginx-service --replicas 3 -p 80:80 nginx:latest

7. Spuštěním příkazu níže potvrďte službu (nginx-service), kterou jste dříve vytvořili (krok 6).

sudo docker service ls

8. Nyní se přepněte na každý uzel a spusťte příkaz níže, abyste zobrazili dostupné kontejnery.

sudo docker ps

Uvidíte jednu repliku kontejneru, který jste vytvořili pro každý uzel, jak je znázorněno níže.

9. Nakonec získejte IP adresy pro každou z instancí EC2 a přejděte k nim ve svém preferovaném webovém prohlížeči.

Podobně níže můžete ověřit, že každá instance obsahuje repliku vaší aplikace.

Nasazení a škálování aplikace s více službami

Prošli jste nasazením jedné služby, ale jak byste nasadili aplikaci s více službami? Docker Swarm také zvládne práci. Použijete stack deploy příkaz, který používá pokyny uvedené v souboru YAML, který vytvoříte.

1. Otevřete uzel manažera a vytvořte soubor YAML ve vašem preferovaném textovém editoru. Soubor můžete pojmenovat jinak, ale pro tuto ukázku se soubor jmenuje název-souboru.yml .

Vyplňte název-souboru.yml soubor s následujícím kódem, který vytvoří dvě služby pomocí obrázků NGINX a Ubuntu.

version: '3.3' # version of compose file
services:
  service1:
    image: 'nginx:latest' # latest version of NGINX image on Docker hub
    ports:
      - '8000:8080'
  service2:
    image: 'ubuntu' # Ubuntu image on docker hub

2. Dále spusťte docker stack příkaz níže k deploy služby vytvořené file-name.yml soubor do Docker Swarm. new-stack parametr je libovolný, který pojmenovává zásobník, který příkaz vytváří pro služby.

sudo docker stack deploy -c file-name.yml new-stack

3. Spusťte níže uvedený příkaz pro zobrazení seznamu dostupných služeb a poznamenejte si název služby, kterou chcete.

sudo docker service ls

4. Nyní spusťte níže uvedený příkaz a vytvořte repliky pro váš zásobník. Čtyři (4 ) repliky, abych byl přesný pro toto demo. Manažerský uzel určí, které uzly budou obsahovat repliky.

Aplikace, kterou jste dříve nasadili do Docker Swarm (krok dva), má pouze jednu repliku zpracovanou manažerským uzlem. Chcete-li službu škálovat, vytvořte čtyři repliky této služby. Protože máte pouze tři uzly, jeden uzel zvládne dvě repliky, zatímco zbytek uzlů zpracuje každý jeden.

Službu můžete také zmenšit snížením počtu replik.

sudo docker service scale new-stack_service1=4

5. Nakonec spusťte příkaz docker service níže, abyste viděli všechny kontejnery, které aktuálně zpracovávají repliky new-stack_service1 servis.

sudo docker service ps new-stack_service1

Na obrázku níže si všimněte, že jeden uzel zpracovává dvě repliky.

Aktualizace služby ve Swarmu

Už jste se dříve naučili nasazovat služby, ale víte, že je možné služby aktualizovat? Možná budete chtít vyzkoušet starší verzi služby. Pokud ano, použijete update tag a --image příznakem uveďte verzi služby, kterou chcete, a poté uveďte název služby, kterou chcete aktualizovat.

1. Spusťte níže uvedený příkaz a prohlédněte si podrobnosti o aktuálně spuštěné službě.

sudo docker service inspect --pretty nginx-service

Níže můžete vidět, že NGINX běží nejnověji verze.

2. Nyní spusťte níže uvedený příkaz, pokud chcete změnit/aktualizovat na jinou verzi NGINX v aktuálně spuštěné službě (nginx-service ) na testování. Nezapomeňte nahradit nginx:1.20 s vámi preferovanou verzí.

sudo docker service update --image nginx:1.20 nginx-service

3. Nakonec znovu spusťte níže uvedený příkaz jako dříve (krok jedna), abyste si prohlédli podrobnosti o běžící službě.

sudo docker service inspect --pretty nginx-service

Všimněte si níže, že běžící služba byla úspěšně aktualizována.

Aktualizace dostupnosti uzlů

Možná budete chtít pracovat na konkrétním pracovním uzlu, abyste mohli provést nějaké změny v kontejneru, ale chcete, aby byla vaše aplikace aktivní. Jak? Zatímco na tomto uzlu pracujete, drain tento uzel, takže nepřijímá žádné úkoly z uzlu manažera.

Spolu s drain musíte přidat update tag a --availability příznak změnit dostupnost konkrétního uzlu.

1. Spusťte docker node příkazem níže zobrazíte dostupné uzly a poznamenáte si ID vašeho cílového uzlu.

sudo docker node ls

2. Dále spusťte níže uvedený příkaz pro změnu --availability uzlu odvodněním (drain ). Nahradit kseh5660n8xb3i2ojidzx0x13 s ID cílového uzlu, které jste si poznamenali v prvním kroku.

sudo docker node update --availability drain kseh5660n8xb3i2ojidzx0x13

3. Nakonec znovu spusťte docker níže, jako jste to udělali v kroku 1, abyste vypsali dostupné uzly. sudo docker node ls

sudo docker node ls

Níže můžete vidět, že dostupnost vybraného uzlu se změnila (Vypouštění ), takže uzel se nebude účastnit aktivit probíhajících v roji.

Závěr

V tomto tutoriálu jste se naučili, jak využít orchestraci kontejnerů pomocí Docker Swarm. Získali jste základní znalosti o škálování aplikace s více službami a provádění operací při práci s Docker Swarm.

V tuto chvíli již víte, jak spravovat svůj kontejner a služby Docker v Docker Swarm. Jak tedy plánujete začlenit tyto nově nabyté znalosti do vašich budoucích kontejnerových orchestrací? Možná začít nasazovat aplikace Django pomocí Docker Swarm?


Docker
  1. Některé příkazy DOCKER

  2. Úvod do Dockeru

  3. Proč bych se měl zajímat o Kubernetes, Docker a Container Orchestration?

  1. Jak spustit MySQL v kontejneru Docker

  2. Jak SSH do kontejneru Docker

  3. Jak přiřadit statickou IP ke kontejneru Docker

  1. Výukový program MySQL Docker Container:Jak nastavit a nakonfigurovat

  2. Jak nainstalovat Vim do kontejneru Docker

  3. Jak vypsat Docker kontejnery