Docker Compose vs Docker Swarm

Docker Compose Vs Docker Swarm



Amb el contenidor ‘revolució’ les aplicacions han crescut molt més que ser només una base de dades i un frontend. Les aplicacions es divideixen en diversos microserveis i normalment es comuniquen entre si mitjançant una API REST (normalment càrregues útils formatades per JSON mitjançant HTTP). Els contenidors Docker són ideals per a aquest tipus d’arquitectura. Podeu empaquetar el vostre ‘microservei’ frontal a un contenidor Docker, la base de dades passa a un altre, etc., etc. Cada servei parla amb un altre mitjançant una API REST predefinida en lloc de ser un monòlit escrit com un sol programa.

Si heu d’implementar una nova funcionalitat o una característica, per exemple, un motor d’anàlisi, només podeu escriure un microservei nou per a això i que consumiria dades mitjançant l’API REST exposada pels diversos microserveis de la vostra aplicació web. I a mesura que la vostra funcionalitat creixi amb el pas del temps, aquesta llista de microserveis també anirà creixent.







No voleu desplegar cada contenidor individual, configurar-lo i, a continuació, configurar la resta per parlar-hi també. Això tornarà tediós fins i tot amb tres contenidors. Docker-Compose us permet automatitzar el desplegament de diversos contenidors.



Docker-Compose és una de les eines més senzilles que us ajuda a transformar la idea abstracta dels microserveis en un conjunt funcional de contenidors Docker.



Sistemes distribuïts

Ara que hem dividit l’aplicació web en diversos contenidors, no té cap sentit mantenir-les totes en un únic servidor (pitjor encara en una única màquina virtual!), On entren en joc serveis com Docker Swarm i Kubernetes.





Docker Swarm us permet executar diverses rèpliques de la vostra aplicació en diversos servidors. Si el vostre microserveu està escrit de manera que es pugui escalar 'horitzontalment', podeu utilitzar Docker Swarm per desplegar la vostra aplicació web en diversos centres de dades i diverses regions. Això ofereix resistència davant la fallada d’un o més centres de dades o enllaços de xarxa. Normalment, això es fa mitjançant un subordre de Docker, és a dir, Docker Stack.

El Pila Docker el subcomandament es comporta molt més com l'ordre Docker-Compose i això pot conduir a conceptes erronis a algú que utilitza qualsevol de les tecnologies.



Font de confusió

Pel que fa a l’ús i al flux de treball, les dues tecnologies funcionen de manera molt semblant i això provoca confusió. La forma de desplegar l'aplicació amb Docker Swarm o Docker-Compose és molt similar. Definiu la vostra aplicació en un fitxer YAML, aquest fitxer contindrà el nom de la imatge, la configuració de cada imatge i també l’escala (nombre de rèpliques) que haurà de complir cada microservei al desplegament.

La diferència rau principalment en el dorsal, on Docker-Compose desplega un contenidor en un sol host Docker, Docker Swarm el desplega en diversos nodes. Parlant lliurement, encara pot fer la majoria de coses que pot fer la composició de docker, però l’escala en diversos amfitrions de Docker.

Semblances

Tant Docker Swarm com Docker-Compose tenen les següents semblances:

  1. Tots dos prenen definicions amb format YAML de la vostra pila d'aplicacions.
  2. Tots dos estan pensats per fer front a aplicacions de diversos contenidors (microserveis)
  3. Tots dos tenen un paràmetre d’escala que us permet executar diversos contenidors de la mateixa imatge i permetre que el vostre microserveu pugui escalar horitzontalment.
  4. Tots dos són gestionats per la mateixa empresa, és a dir, Docker, Inc.

Diferències

Les poques diferències entre Docker Swarm i Docker-Compose:

  1. Docker Swarm s’utilitza per escalar la vostra aplicació web en un o més servidors. Quan Docker-compose simplement executarà la vostra aplicació web en un sol host Docker.
  2. Escalar la vostra aplicació web Docker Swarm ofereix una alta disponibilitat i tolerància a fallades greus. Escalar la vostra aplicació web mitjançant Docker-Compose en un sol amfitrió només és útil per a proves i desenvolupament.
  3. Docker Swarm i subordres relacionats com Docker Swarm i Docker Stack s’incorporen a la pròpia Docker CLI. Totes formen part del binari Docker al qual truqueu a través del vostre terminal. Docker-Compose és binari independent per si mateix.

Un cas d'ús per a Docker-Compose

Com es va descriure anteriorment, totes dues són eines completament diferents i cadascuna resol un problema completament diferent, de manera que no és com si una alternativa fos l’altra. Tot i això, per donar als nous usuaris una idea del que estic parlant, aquí teniu un cas d’ús per a Docker Compose.

Suposem que voleu allotjar automàticament un bloc de WordPress en un sol servidor. Configurar-lo o mantenir-lo no és una cosa que vulgueu fer, manualment, de manera que el que faríeu és instal·lar Docker i Docker-compose al vostre VPS, creeu un simple fitxer YAML que defineixi tots els diversos aspectes de la vostra pila de WordPress, com a continuació, :

Nota: Si utilitzeu el següent per desplegar un lloc de WordPress, canvieu totes les contrasenyes a alguna cosa segura. Millor encara, utilitzeu Docker Secrets per emmagatzemar dades sensibles com a contrasenyes, en lloc de tenir-les en un fitxer de text pla.

versió:'3'

serveis:
db:
imatge: mysql:5.7
volums:
- db_data:/on/lib/mysql
reiniciar: sempre
entorn:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depén de:
- db
imatge: wordpress: últim
ports:
-'8000: 80'
reiniciar: sempre
entorn:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpressPassword
WORDPRESS_DB_NAME: wordpress
volums:
db_data:{}

Un cop creat el fitxer i instal·lats tant Docker com Docker-compose, tot el que heu de fer és executar:

$acoblador-composa-d

I el vostre lloc estarà en funcionament. Si hi ha una actualització, executeu:

$acoblador-redactar

A continuació, llenceu les imatges antigues de Docker i executeu l'ordre docker-compose up -d i les imatges noves s'introduiran automàticament. Com que teniu les dades persistents emmagatzemades en un volum de Docker, el contingut del vostre lloc web no es perdrà.

Quan s’ha d’utilitzar Docker Swarm

Tot i que Docker-compose és més una eina d’automatització, Docker Swarm està pensat per a aplicacions més exigents. Aplicacions web amb centenars o milers d’usuaris o càrrega de treball que cal escalar paral·lelament. Les empreses amb una gran base d’usuaris i requisits d’SLA estrictes voldrien utilitzar un sistema distribuït com Docker Swarm. Si la vostra aplicació s’executa en diversos servidors i diversos centres de dades, les possibilitats de temps d’inactivitat a causa d’un enllaç de xarxa o de xarxa afectat es redueixen significativament.

Dit això, dubto en recomanar Docker Swarm per a casos d’ús de producció, perquè tecnologies competidores com Kubernetes són possiblement més adequades per a aquesta tasca. Kubernetes s'admet de forma nativa a molts proveïdors de núvol i funciona bastant bé amb els contenidors Docker, de manera que ni tan sols heu de reconstruir l'aplicació per aprofitar Kubernetes.

Conclusió

Espero que aquesta divagació amb Docker i els seus projectes de satèl·lit fos informativa i estigueu més preparats per a l'ecosistema de Docker.