Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



S kontajnerovou „revolúciou“ sa aplikácie rozrástli oveľa viac než len o databázu a frontend. Aplikácie sú rozdelené do rôznych mikroslužieb a zvyčajne medzi sebou komunikujú prostredníctvom rozhrania REST API (zvyčajne užitočné údaje vo formáte JSON cez HTTP). Dockerové kontajnery sú pre tento druh architektúry ideálne. Svoju „mikroslužbu“ frontendu môžete zabaliť do kontajnera Docker, databáza sa presunie do iného a tak ďalej a tak ďalej. Každá služba hovorí s niekým iným ako o preddefinovanom rozhraní REST API, nie o monolite napísanom ako jeden softvér.

Ak potrebujete implementovať novú funkciu alebo funkciu, napr. Analytický nástroj, môžete na to jednoducho napísať novú mikroslužbu, ktorá by spotrebovala údaje prostredníctvom rozhrania REST API odhaleného rôznymi mikroslužbami vašej webovej aplikácie. A ako bude vaša funkčnosť v priebehu času rásť, bude spolu s ním rásť aj tento zoznam mikroslužieb.







Nechcete nasadiť každý jednotlivý kontajner, nakonfigurovať ho a potom nakonfigurovať všetko ostatné, aby ste s ním mohli hovoriť. Už s tromi kontajnermi to bude únavné. Docker-Compose vám umožňuje automatizovať nasadenie viacerých kontajnerov.



Docker-Compose je jeden z najjednoduchších nástrojov, ktorý vám pomôže transformovať abstraktnú myšlienku mikroslužieb na funkčnú sadu kontajnera Docker.



Distribuované systémy

Teraz, keď sme rozdelili otvorenú webovú aplikáciu do viacerých kontajnerov, nemá zmysel ponechať ich všetky na jednom serveri (ešte horšie na jednom virtuálnom počítači!). Práve tu vstupujú do hry služby ako Docker Swarm a Kubernetes.





Docker Swarm vám umožňuje prevádzkovať viacero replík vašej aplikácie na viacerých serveroch. Ak je vaša mikroslužba napísaná spôsobom, ktorý môže škálovať „horizontálne“, môžete pomocou Docker Swarm nasadiť svoju webovú aplikáciu do viacerých dátových centier a viacerých oblastí. To ponúka odolnosť voči zlyhaniu jedného alebo viacerých dátových centier alebo sieťových prepojení. Obvykle sa to robí pomocou podpríkazu v Dockere, to znamená Docker Stack.

The Docker Stack čiastkový príkaz sa správa oveľa viac ako príkaz Docker-Compose a to môže viesť k mylným predstavám, ak niekto používa niektorú z týchto technológií.



Zdroj zmätku

Pokiaľ ide o použitie a pracovný tok, obe technológie fungujú veľmi podobne a to spôsobuje zmätok. Spôsob nasadenia aplikácie pomocou Docker Swarm alebo Docker-Compose je veľmi podobný. Svoju aplikáciu definujete v súbore YAML, tento súbor bude obsahovať názov obrázka, konfiguráciu pre každý obrázok a tiež mierku (počet replík), ktoré bude každá mikroslužba musieť splniť pri nasadení.

Rozdiel spočíva väčšinou v backende, kde docker-compose nasadí kontajner na jednom hostiteľovi Docker, Docker Swarm ho nasadí na viacero uzlov. Voľne povedané, stále môže robiť väčšinu vecí, ktoré dokáže docker-compose, ale škáluje ho medzi viacerých hostiteľov Dockeru.

Podobnosti

Docker Swarm aj Docker-Compose majú nasledujúcu podobnosť:

  1. Obe preberajú definície vášho balíka aplikácií vo formáte YAML.
  2. Oba sú určené na riešenie aplikácií s viacerými kontajnermi (mikroslužby)
  3. Oba majú parameter scale, ktorý vám umožňuje spustiť viac kontajnerov rovnakého obrázku, čo umožňuje horizontálne škálovanie vašej mikroslužby.
  4. Oba sú spravované tou istou spoločnosťou, tj. Docker, Inc.

Rozdiely

Niekoľko rozdielov medzi Docker Swarm a Docker-Compose:

  1. Docker Swarm sa používa na škálovanie vašej webovej aplikácie na jednom alebo viacerých serveroch. Kde ako Docker-compose jednoducho spustí vašu webovú aplikáciu na jednom hostiteľovi Docker.
  2. Škálovanie vašej webovej aplikácie Docker Swarm ponúka seriózne vysokú dostupnosť a odolnosť voči chybám. Škálovanie vašej webovej aplikácie pomocou Docker-Compose na jednom hostiteľovi je užitočné iba na testovanie a vývoj.
  3. Docker Swarm a súvisiace čiastkové príkazy ako Docker Swarm a Docker Stack sú integrované do samotného Docker CLI. Všetky sú súčasťou binárnej sady Docker, ktorú voláte prostredníctvom svojho terminálu. Docker-Compose je sám o sebe binárnym číslom.

Prípad použitia pre Docker-Compose

Ako je popísané vyššie, obidva sú úplne odlišné nástroje a každý rieši úplne iný problém, takže to nie je tak, že by jeden bol alternatívou k druhému. Aby však noví prichádzajúci pochopili, o čom hovorím, tu je prípad použitia Docker Compose.

Predpokladajme, že chcete svoj vlastný blog WordPress prevádzkovať na jednom serveri. Manuálne nastavenie alebo údržba nie je to, čo by ste chceli robiť, takže namiesto toho by ste do DoVPS nainštalovali Docker a Docker-compose, vytvorte jednoduchý súbor YAML definujúci všetky rôzne aspekty vášho balíka WordPress, ako je uvedené nižšie, :

Poznámka: Ak na nasadenie stránky WordPress používate nižšie uvedené položky, zmeňte všetky heslá na bezpečné. Ešte lepšie je použiť Docker Secrets na ukladanie citlivých údajov, ako sú heslá, namiesto toho, aby ste ich mali v obyčajnom textovom súbore.

verzia:'3'

služby:
db:
obrázok: mysql:5.7
objemy:
- db_data:/kde/lib/mysql
reštart: vždy
prostredie:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
záleží na:
- db
obrázok: wordpress: najnovší
porty:
-„8000: 80“
reštart: vždy
prostredie:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
objemy:
db_data:{}

Akonáhle je súbor vytvorený a nainštalované Docker aj Docker-compose, stačí spustiť:

$ukotviť-skomponovať-d

A váš web bude v prevádzke. Ak dôjde k aktualizácii, spustite:

$docker-compose down

Potom zahoďte staré obrázky Dockeru a spustite príkaz docker -compose up -d a nové obrázky sa automaticky stiahnu. Keďže máte trvalé údaje uložené v zväzku Docker, obsah vašich webových stránok sa nestratí.

Kedy použiť Docker Swarm

Kým Docker-compose je skôr nástrojom automatizácie, Docker Swarm je určený pre náročnejšie aplikácie. Webové aplikácie so stovkami alebo tisíckami používateľov alebo pracovným zaťažením, ktoré je potrebné škálovať súbežne. Spoločnosti s veľkou používateľskou základňou a prísnymi požiadavkami SLA by chceli používať distribuovaný systém, akým je Docker Swarm. Ak je vaša aplikácia spustená na viacerých serveroch a viacerých dátových centrách, pravdepodobnosť výpadku v dôsledku ovplyvneného DC alebo sieťového prepojenia sa výrazne zníži.

To znamená, že váham odporučiť Docker Swarm pre prípady použitia vo výrobe, pretože konkurenčné technológie ako Kubernetes sú na túto úlohu pravdepodobne vhodnejšie. Kubernetes je natívne podporovaný mnohými poskytovateľmi cloudových služieb a funguje celkom dobre s kontajnermi Docker Containers, takže ani nemusíte prestavovať svoju aplikáciu, aby ste mohli využívať výhody Kubernetes.

Záver

Dúfam, že toto táranie na Dockere a jeho satelitných projektoch bolo informatívne a ste viac pripravení na ekosystém dockerov.