Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm

S kontejnerovou „revolucí“ se aplikace rozrostla mnohem víc než jen o databázi a frontend. Aplikace jsou rozděleny do různých mikroslužeb a obvykle spolu komunikují prostřednictvím rozhraní REST API (obvykle datové části ve formátu JSON přes HTTP). Docker kontejnery jsou pro tento druh architektury ideální. Svou „mikroslužbu“ frontendu můžete sbalit do kontejneru Dockeru, databáze přejde do jiného a tak dále a tak dále. Každá služba hovoří s jinou prostřednictvím předdefinovaného REST API místo toho, aby byla monolitem napsaným jako jeden kus softwaru.

Pokud potřebujete implementovat novou funkci nebo funkci, např. Analytický modul, můžete jednoduše napsat novou mikroslužbu, která by spotřebovala data prostřednictvím rozhraní REST API vystaveného různými mikroslužbami vaší webové aplikace. A jak se vaše funkce postupem času rozrůstají, bude spolu s tím růst i tento seznam mikroslužeb.



Nechcete nasadit každý jednotlivý kontejner, nakonfigurovat jej a poté nakonfigurovat vše ostatní, abyste s ním také hovořili. Se třemi kontejnery to bude únavné. Docker-Compose vám umožňuje automatizovat nasazení více kontejnerů.



Docker-Compose je jedním z nejjednodušších nástrojů, který vám pomůže transformovat abstraktní myšlenku mikroslužeb na funkční sadu kontejneru Docker.



Distribuované systémy

Když jsme nyní rozdělili otevřenou webovou aplikaci na více kontejnerů, nemá smysl ponechat je všechny na jednom serveru (ještě hůře na jednom virtuálním počítači!), Kde se uplatňují služby jako Docker Swarm a Kubernetes.

Docker Swarm vám umožňuje provozovat více replik vaší aplikace na více serverech. Pokud je vaše mikroslužba napsána způsobem, který lze škálovat „horizontálně“, můžete pomocí Docker Swarm nasadit svou webovou aplikaci do více datových center a více oblastí. To nabízí odolnost proti selhání jednoho nebo více datových center nebo síťových propojení. To se obvykle provádí pomocí dílčího příkazu v Dockeru, tedy Docker Stack.

The Docker Stack dílčí příkaz se chová mnohem více jako příkaz Docker-Compose a to může vést k mylným představám o tom, že někdo používá některou z technologií.



Zdroj zmatku

Pokud jde o využití a pracovní postup, obě technologie fungují velmi podobně a to způsobuje zmatek. Způsob nasazení aplikace pomocí Docker Swarm nebo Docker-Compose je velmi podobný. Aplikaci definujete v souboru YAML, tento soubor bude obsahovat název obrázku, konfiguraci pro každý obrázek a také měřítko (počet replik), které bude každá mikroslužba vyžadovat při nasazení.

Rozdíl spočívá většinou v backendu, kde docker-compose nasadí kontejner na jednoho hostitele Dockeru, Docker Swarm jej nasadí přes více uzlů. Volně řečeno, stále může dělat většinu věcí, které docker-compose může, ale škáluje jej mezi více hostiteli Dockeru.

Podobnosti

Docker Swarm i Docker-Compose mají následující podobnosti:

  1. Oba přebírají definice vašeho zásobníku aplikací ve formátu YAML.
  2. Oba jsou určeny k řešení aplikací s více kontejnery (mikroslužby)
  3. Oba mají parametr scale, který vám umožní spustit více kontejnerů stejného obrázku, což vaší mikroslužbě umožní horizontální škálování.
  4. Oba jsou spravovány stejnou společností, tj. Docker, Inc.

Rozdíly

Několik rozdílů mezi Docker Swarm a Docker-Compose:

  1. Docker Swarm se používá k škálování vaší webové aplikace na jednom nebo více serverech. Kde jako Docker-compose jednoduše spustí vaši webovou aplikaci na jednom hostiteli Dockeru.
  2. Škálování vaší webové aplikace Docker Swarm nabízí velmi vysokou dostupnost a odolnost proti chybám. Škálování webové aplikace pomocí Docker-Compose na jednom hostiteli je užitečné pouze pro testování a vývoj.
  3. Docker Swarm a související dílčí příkazy jako Docker Swarm a Docker Stack jsou integrovány do samotného Docker CLI. Všechny jsou součástí binárního souboru Docker, který voláte prostřednictvím svého terminálu. Docker-Compose je samostatný binární soubor sám o sobě.

Případ použití pro Docker-Compose

Jak je popsáno výše, oba jsou zcela odlišné nástroje a každý řeší úplně jiný problém, takže to není tak, že by jeden byl alternativou pro druhý. Aby však noví uživatelé měli pocit, o čem mluvím, zde je případ použití Docker Compose.

Předpokládejme, že chcete blog WordPress na jednom serveru hostovat sami. Ruční nastavení nebo údržba není něco, co byste chtěli dělat, takže místo toho nainstalujete Docker a Docker-compose na VPS, vytvoříte jednoduchý soubor YAML definující všechny různé aspekty vašeho zásobníku WordPress, jako níže, :

Poznámka: Pokud k nasazení webu WordPress používáte níže uvedené, změňte prosím všechna hesla na něco bezpečného. Ještě lépe, použijte Docker Secrets k ukládání citlivých dat, jako jsou hesla, místo toho, abyste je měli v prostém textovém souboru.

verze:'3'

služby:
db:
obrázek: mysql:5.7
objemy:
- db_data:/kde/lib/mysql
restart: vždy
životní prostředí:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
záleží na:
- db
obrázek: wordpress: nejnovější
porty:
-'8000: 80'
restart: vždy
životní prostředí:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
objemy:
db_data:{}

Jakmile je soubor vytvořen a nainstalován Docker i Docker-compose, stačí spustit:

$ukotvit-komponovat-d

A vaše stránky budou v provozu. Pokud dojde k aktualizaci, spusťte:

$docker-komponovat dolů

Poté vyhoďte staré obrázky Dockeru a spusťte příkaz docker -compose up -d a nové obrázky se automaticky načtou. Protože máte trvalá data uložená ve svazku Docker, obsah vašeho webu se neztratí.

Kdy použít Docker Swarm

Zatímco Docker-compose je spíše nástrojem automatizace, Docker Swarm je určen pro náročnější aplikace. Webové aplikace se stovkami nebo tisíci uživatelů nebo pracovní zátěží, které je třeba škálovat paralelně. Společnosti s velkou uživatelskou základnou a přísnými požadavky SLA by chtěly používat distribuovaný systém, jako je Docker Swarm. Pokud vaše aplikace běží na více serverech a více datových centrech, šance na prostoje v důsledku ovlivněného DC nebo síťového připojení se výrazně sníží.

To znamená, že váhám doporučit Docker Swarm pro případy použití výroby, protože konkurenční technologie, jako je Kubernetes, jsou pro tento úkol pravděpodobně vhodnější. Kubernetes je nativně podporován napříč mnoha cloudovými poskytovateli a funguje docela dobře s Docker Containers, takže ani nemusíte znovu vytvářet aplikaci, abyste mohli využívat výhody Kubernetes.

Závěr

Doufám, že toto toulání po Dockeru a jeho satelitních projektech bylo informativní a jste na ekosystém dockeru připravenější.