Docker Compose gegen Docker Swarm

Docker Compose gegen Docker Swarm

Web -Apps und Microservices

Mit den Apps der Container -Revolution ist viel mehr als nur eine Datenbank und Frontend gewachsen. Anwendungen werden in verschiedene Microservices aufgeteilt und kommunizieren normalerweise über eine REST -API (typischerweise mit JSON -Nutzlasten über HTTP formatierte Nutzlasten) miteinander. Docker -Container sind ideal für diese Art von Architektur. Sie können Ihr Frontend 'Microservice' in einen Docker -Container packen, die Datenbank geht in einen anderen und so weiter usw. ein. Jeder Dienst spricht über eine vordefinierte REST -API mit einem anderen, anstatt ein Monolith als einzelne Software zu sein.

Wenn Sie eine neue Funktionalität oder eine Funktion implementieren müssen, e.G, eine Analyse -Engine, können Sie einfach einen neuen Microservice dafür schreiben und sie würden Daten über die Rest -API konsumieren, die von den verschiedenen Mikrodiensten Ihrer Web -App ausgesetzt ist. Und wenn Ihre Funktionalität im Laufe der Zeit wächst, wächst diese Liste der Microservices ebenfalls mit.

Sie möchten nicht jeden einzelnen Container bereitstellen, ihn konfigurieren und dann auch alles andere konfigurieren, um mit ihm zu sprechen. Das wird mit drei Behältern mühsam werden. Mit Docker-Compose können Sie die Bereitstellung mehrerer Container automatisieren.

Docker-Compose ist eines der einfachsten Tools, mit denen Sie die abstrakte Idee von Microservices in einen funktionellen Satz von Docker-Containern umwandeln können.

Verteilte Systeme

Jetzt, da wir die Web -App in mehrere Container aufgeteilt haben, ist es wenig sinnvoll, sie alle auf einem einzelnen Server zu halten (schlimmer noch auf einer einzelnen virtuellen Maschine!) Hier kommen Dienste wie Docker Swarm und Kubernetes ins Spiel.

Mit Docker Swarm können Sie mehrere Replikate Ihrer Anwendung über mehrere Server ausführen. Wenn Ihr MicroService so geschrieben ist, dass er "horizontal" skalieren kann. Dies bietet Belastbarkeit gegen das Ausfall eines oder mehrerer Rechenzentren oder Netzwerkverbindungen. Dies erfolgt in der Regel mit einem Unterbefehl in Docker, dh Docker Stack.

Der Docker Stack Der Unterbefehl verhält sich viel mehr dem Befehl docker-compose, und das kann zu Missverständnissen für jemanden führen, der eine der Technologien verwendet.

Verwirrungsquelle

In Bezug auf Nutzung und Arbeitsablauf funktionieren beide Technologien einander sehr, und dies verursacht Verwirrung. Die Art und Weise, wie Sie Ihre App mit Docker Swarm oder Docker-Compose bereitstellen, ist sehr ähnlich. Sie definieren Ihre Anwendung in einer YAML -Datei. Diese Datei enthält den Bildnamen, die Konfiguration für jedes Bild und auch die Skala (Anzahl der Replikate), die jeder Microservice in der Bereitstellung erfüllen muss.

Der Unterschied liegt hauptsächlich im Backend, in dem Docker-Compose Container auf einem einzigen Docker-Host bereitstellt, dockt Docker Swarm ihn über mehrere Knoten hinweg ein. Locker gesagt kann es immer noch die meisten Dinge tun, die Docker-compose können, aber es skaliert es über mehrere Docker-Hosts hinweg.

Ähnlichkeiten

Sowohl Docker Swarm als auch Docker-Compose haben die folgenden Ähnlichkeiten:

  1. Beide nehmen YAML -formatierte Definitionen Ihres Anwendungsstapels an.
  2. Beide sollen sich mit Multi-Container-Anwendungen (Microservices) befassen
  3. Beide haben einen Skalenparameter, mit dem Sie mehrere Container desselben Bildes ausführen können, sodass Ihr Microservice horizontal skalieren kann.
  4. Sie werden beide von derselben Firma gepflegt, ich.E, Docker, Inc.

Unterschiede

Die wenigen Unterschiede zwischen Docker Swarm und Docker-Compose:

  1. Docker Swarm wird verwendet, um Ihre Web -App über einen oder mehrere Server zu skalieren. Wo als Docker-Compose einfach Ihre Web-App auf einem einzigen Docker-Host ausführen.
  2. Skalierung Ihrer Web -App Docker Swarm bietet eine ernsthafte hohe Verfügbarkeit und Fehlertoleranz. Skalierung Ihrer Web-App mit Docker-Compose auf einem einzelnen Host ist nur für Testen und Entwicklung nützlich.
  3. Docker Swarm und verwandte Unterbefehle wie Docker Swarm und Docker Stack sind in die Docker CLI selbst integriert. Sie sind alle Teil des Docker -Binary, den Sie über Ihr Terminal anrufen. Docker-Compose ist an und für sich selbst eigenständiges Binär.

Ein Anwendungsfall für Docker-Compose

Wie oben beschrieben, sind sie beide völlig unterschiedliche Werkzeuge und löst ein völlig anderes Problem, so dass es nicht so ist, als wäre einer eine Alternative für den anderen. Um den New Comers jedoch ein Gefühl dafür zu geben, wovon ich spreche, hier ist ein Anwendungsfall für Docker Compose.

Angenommen, Sie möchten einen WordPress-Blog auf einem einzigen Server selbst veranstalten. Richten Sie es auf oder walten Sie es nicht aus, und erstellen Sie also stattdessen eine einfache YAML-Datei, die alle verschiedenen Aspekte Ihres WordPress-Stacks definiert, wie unten. :

Hinweis: Wenn Sie das unten verwenden, um eine WordPress -Site bereitzustellen, ändern Sie bitte alle Passwörter in etwas Sicheres. Besser noch, verwenden Sie Docker -Geheimnisse, um sensible Daten wie Passwörter zu speichern, anstatt sie in einer einfachen Textdatei zu haben.

Version: '3'
Dienstleistungen:
DB:
Bild: Mysql: 5.7
Bände:
- db_data:/var/lib/mysql
Neustart: Immer
Umfeld:
MySQL_ROOT_PASSWORD: Einwordpress
MySQL_Database: WordPress
MySQL_USER: WordPress
MySQL_Password: WordPress
WordPress:
kommt drauf an:
- db
Bild: WordPress: Neueste
Häfen:
- "8000: 80"
Neustart: Immer
Umfeld:
WordPress_DB_HOST: DB: 3306
WordPress_DB_USER: WordPress
WordPress_DB_Password: WordPressPassword
WordPress_DB_NAME: WordPress
Bände:
db_data:

Sobald die Datei erstellt wurde und sowohl Docker als auch Docker-Compose installiert sind, müssen Sie lediglich ausgeführt werden:

$ docker -compose up -d

Und Ihre Website wird in Betrieb sein. Wenn es ein Update gibt, dann führen Sie aus:

$ docker-compose down

Werfen Sie dann die alten Docker -Bilder weg und führen. Da die anhaltenden Daten in einem Docker -Volumen gespeichert sind, wird der Inhalt Ihrer Website nicht verloren gehen.

Wann man Docker Swarm benutzt

Während Docker-Compose eher ein Automatisierungswerkzeug ist, ist Docker Swarm für anspruchsvollere Anwendungen gedacht. Web -Apps mit Hunderten oder Tausenden von Benutzern oder Workloads, die parallelly skaliert werden müssen. Unternehmen mit großen Benutzerbasis und strengen SLA -Anforderungen möchten ein verteiltes System wie Docker Swarm verwenden. Wenn Ihre App über mehrere Server und mehrere Rechenzentren ausgeführt wird, werden die Chancen auf die Ausfallzeit aufgrund eines betroffenen DC- oder Netzwerkverbindungsverbinds erheblich reduziert.

Trotzdem zögere ich, Docker Swarm für Produktionswendungsfälle zu empfehlen, da konkurrierende Technologien wie Kubernetes wohl für diese Aufgabe passender sind. Kubernetes wird in vielen Cloud -Anbietern nativ unterstützt und funktioniert mit Docker -Containern ziemlich gut, sodass Sie Ihre App nicht einmal wieder aufbauen müssen, um Kubernetes zu nutzen.

Abschluss

Ich hoffe, dass dieses Streifen auf Docker und seine Satellitenprojekte informativ war und Sie mehr auf das Docker -Ökosystem vorbereitet sind.