Přístavní dělník

Docker Compose vs Docker Swarm

Docker Compose vs Docker Swarm

Webové aplikace a mikroslužby

Díky kontejneru se „revoluce“ aplikací rozrostla mnohem víc než jen databáze a rozhraní. Aplikace jsou rozděleny do různých mikroslužeb a obvykle spolu komunikují prostřednictvím rozhraní REST API (obvykle užitečné zatížení ve formátu JSON přes HTTP). Kontejnery Docker jsou ideální pro tento druh architektury. Svou frontendovou „mikroslužbu“ můžete zabalit do kontejneru Docker, databáze přejde do jiné atd. A tak dále. Každá služba hovoří s jinou prostřednictvím předdefinovaného rozhraní REST API, místo aby byla monolitem psaným jako jeden software.

Pokud potřebujete implementovat novou funkci nebo funkci, např.g, analytický stroj, můžete jednoduše napsat novou mikroslužbu a to by spotřebovalo data prostřednictvím REST API vystaveného různými mikroslužbami vaší webové aplikace. A jak vaše funkčnost v průběhu času poroste, spolu s ní poroste i tento seznam mikroslužeb.

Nechcete nasadit každý jednotlivý kontejner, nakonfigurovat jej a poté nakonfigurovat vše ostatní, aby s ním také mluvil. To bude zdlouhavé dokonce se třemi kontejnery. Docker-Compose umožňuje automatizovat nasazení více kontejnerů.

Docker-Compose je jeden z nejjednodušších nástrojů, který vám pomůže transformovat abstraktní představu o mikroslužbách do funkční sady kontejneru Docker.

Distribuované systémy

Nyní, když jsme webovou aplikaci rozdělili do více kontejnerů, nemá smysl uchovávat je všechny na jednom serveru (ještě hůře na jednom virtuálním stroji)!) tam vstupují do hry služby jako Docker Swarm a Kubernetes.

Docker Swarm umožňuje spouštět více replik vaší aplikace na více serverech. Pokud je vaše mikroslužba napsána způsobem, který umožňuje horizontální škálování, můžete pomocí Docker Swarm nasadit webovou aplikaci napříč několika datovými centry a více regiony. To nabízí odolnost proti selhání jednoho nebo více datových center nebo síťových odkazů. To se obvykle provádí pomocí dílčího příkazu v Dockeru, tj. 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í navzájem velmi podobně, což způsobuje zmatek. Způsob nasazení aplikace pomocí Docker Swarm nebo Docker-Compose je velmi podobný. Definujete svou aplikaci v souboru YAML, tento soubor bude obsahovat název image, konfiguraci pro každý image a také měřítko (počet replik), které bude při nasazení vyžadovat každá mikroslužba.

Rozdíl spočívá hlavně v backendu, kde docker-compose nasazuje kontejner na jediném hostiteli Docker, Docker Swarm jej nasazuje na více uzlů. Volně řečeno, stále může dělat většinu věcí, které dokáže docker-compose, ale rozšiřuje to na více hostitelů Dockeru.

Podobnosti

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

  1. Oba používají YAML formátované definice vašeho zásobníku aplikací.
  2. Oba jsou určeny k řešení aplikací s více kontejnery (mikroslužby)
  3. Oba mají parametr měřítka, který umožňuje spouštět více kontejnerů stejného obrázku, což umožňuje vaší mikroslužbě horizontálně škálovat.
  4. Oba jsou udržovány stejnou společností, tj.e, 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 jeden nebo více serverů. Kde jako Docker-compose jednoduše spustí vaši webovou aplikaci na jednom hostiteli Docker.
  2. Škálování vaší webové aplikace Docker Swarm nabízí vážně vysokou dostupnost a odolnost proti chybám. Škálování vaší 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 zabudovány do samotného rozhraní Docker CLI. Všechny jsou součástí binárního souboru Docker, kterému voláte prostřednictvím svého terminálu. Docker-Compose je sama o sobě binární.

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

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

Předpokládejme, že chcete hostovat blog WordPress na jednom serveru. Nastavení nebo údržba není něco, co chcete dělat, ručně, takže místo toho byste měli nainstalovat Docker a Docker-compose na svůj VPS, vytvořit jednoduchý soubor YAML definující všechny různé aspekty vašeho WordPress zásobníku, 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 souboru prostého textu.

verze: '3'
 
služby:
db:
obrázek: mysql: 5.7
objemy:
- db_data: / var / 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 jsou nainstalovány Docker i Docker-compose, stačí spustit:

$ docker-compose up -d

A váš web bude funkční. Pokud existuje aktualizace, spusťte:

$ docker-compose down

Pak zahoďte staré Docker obrázky a spusťte příkaz docker-compose up -d a nové obrázky se automaticky načtou. Jelikož máte trvalá data uložená v Docker Volume, obsah vašeho webu se neztratí.

Kdy použít Docker Swarm

Zatímco Docker-compose je spíše automatizační nástroj, Docker Swarm je určen pro náročnější aplikace. Webové aplikace se stovkami nebo tisíci uživateli nebo pracovní zátěží, které je třeba paralelně škálovat. 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 kvůli ovlivněnému DC nebo síťovému propojení se výrazně sníží.

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

Závěr

Doufám, že tento pohyb na Dockeru a jeho satelitních projektech byl poučný a vy jste více připraveni na ekosystém doku.

Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...