Wenn du diesen Artikel liest, kennst du wahrscheinlich das in der DevOps-Welt sehr beliebte Containerisierungswerkzeug: Docker. Aber was genau ist dann Docker Compose? Docker Compose wird verwendet, um Anwendungen, die mehrere Container benötigen, um zu funktionieren, über eine YAML-Datei zu starten.
Oft muss eine Anwendung für verschiedene Aufgaben mehrere Container ausführen. Daher kann es kompliziert sein, diese separat auszuführen, während sie gleichzeitig miteinander kommunizieren. Hier kommt Docker Compose ins Spiel und wird dir die Arbeit erheblich erleichtern.
Die Orchestrierung und die verschiedenen möglichen Aktionen werden in eine Datei docker-compose.yml geschrieben, deren Funktionsweise wir in diesem Artikel näher erläutern werden. Diese eine Datei wird eine Vielzahl von möglichen Aktionen enthalten, vom Aufbau deiner Docker-Images über Verbindungen bis hin zu Volumes.
Docker Compose installieren
Um mit der Nutzung von Docker Compose zu beginnen, musst du das Tool zunächst auf deinem System installieren. Die Installation ist einfach und für verschiedene Plattformen verfügbar.
1. Überprüfung der Voraussetzungen: Bevor du Docker Compose installierst, solltest du sicherstellen, dass du Docker bereits auf deinem System installiert hast. Die Docker Engine ist nämlich für den reibungslosen Betrieb erforderlich. Administrator- oder sudo-Privilegien sind für die Installation erforderlich.
2. Installiere Docker Compose auf deiner Plattform :
a. Bei Linux-Distributionen erfolgt die Installation über den Paketmanager.
Für Ubuntu oder Debian sind die auszuführenden Befehle :
$ sudo apt-get update
$ sudo apt-get install docker-compose-plugin
- Für RPM-basierte Distributionen :
$ sudo yum update
$ sudo yum install docker-compose-plugin
b. Für Windows und macOS wird Docker Compose normalerweise automatisch mit Docker Desktop installiert.
c. Schließlich ist auch eine manuelle Installation möglich, bei der du die Binärdateien aus dem offiziellen GitHub-Repository herunterladen musst.
3. Überprüfe deine Installation, indem du den folgenden Befehl ausführst:
$ docker-compose --version
Dieser Befehl zeigt die installierte Version von Docker Compose an und bestätigt damit, dass die Installation erfolgreich war.
Die Datei docker-compose.yml
Diese Datei enthält alle Regeln und Konfigurationen, die du für die Ausführung deiner Container benötigst. Die YAML-Syntax ist so gestaltet, dass sie menschlich verständlich ist und gleichzeitig für Computer optimiert wurde.
Ihre Struktur besteht aus verschiedenen Elementen:
Version | Dieser Parameter ist notwendig und gibt Docker Compose die Version an, die gemäß der auf deinem System installierten Docker-Version verwendet werden soll. |
Services | In diesem Abschnitt definierst du die verschiedenen Container deiner Anwendung. Jeder Service ist ein individueller Container, der aus einem bestehenden Docker-Image erstellt werden kann (z. B. über ein Docker Hub-Repository) oder aus einem individuellen Dockerfile. |
Netzwerke | Sie legen fest, wie die verschiedenen Services miteinander kommunizieren. Es ist möglich, individuelle Netzwerke zu erstellen, um die Services zu isolieren, oder Standardnetzwerke zu verwenden. |
Volumes | Diese ermöglichen es dir, die in deinen Containern eingebundenen Volumes zu definieren. Sie werden verwendet, um persistente Daten zu speichern oder Dateien zwischen Containern zu teilen. |
Umgebungsvariablen | Du hast die Möglichkeit, Umgebungsvariablen für deine Services festzulegen. Diese können verwendet werden, um das Verhalten deiner Anwendungen zu konfigurieren. Du kannst sie direkt in der Docker Compose-Datei definieren oder in einer .env-Datei. |
Hier ist ein Beispiel für eine Docker Compose-Datei :
In diesem Beispiel haben wir zwei Dienste: web und db. Der erste verwendet das NGINX-Image, legt Port 80 frei und mountet ein Volume für die HTML-Dateien. Der zweite Dienst verwendet das MySQL-Image, setzt ein Passwort und mountet ein Volume für die Datenbank.
Wenn du die Struktur der Docker Compose-Datei nutzt, kannst du komplexere Konfigurationen für deine Multi-Container-Anwendungen erstellen.
Bereitstellung und Verwaltung von Anwendungen
Wenn du die Konfiguration deiner Dienste, Volumes und Netzwerke in Docker Compose abgeschlossen hast, kannst du deine Multi-Container-Anwendungen effizient einsetzen und verwalten.
- Erstmalige Bereitstellung
Um deine Anwendung einzusetzen, führe einfach den folgenden Befehl in dem Verzeichnis aus, in dem sich deine Docker Compose-Datei befindet:
$ docker-compose up
Dieser Befehl baut die benötigten Container und alle in deiner Docker Compose-Datei definierten Objekte (Volumes, Netzwerke, etc.) und startet die Dienste.
- Verwaltung von Containern
Hier sind einige nützliche Befehle für die Verwaltung von Containern :
Um Dienste und Container zu stoppen
$ docker-compose down
- Um die Dienste neu zu starten
$ docker-compose restart
- Um Informationen über laufende Container anzuzeigen
$ docker-compose ps
- Du hast die Möglichkeit, einen bestimmten Dienst zu skalieren, indem du die gewünschte Anzahl an Replikas angibst. Der folgende Befehl skaliert den Webdienst mit 3 Replikas :
$ docker-compose up --scale web=3
- Verwaltung von Umgebungsvariablen
.
Wie bereits erwähnt, ermöglicht es Docker Compose, Umgebungsvariablen direkt in der YAML-Datei oder in einer .env-Datei anzugeben. Diese Variablen sind nützlich, um das Verhalten deiner Anwendungen zu konfigurieren, wie z. B. sensible Informationen wie Passwörter, Schlüssel usw.
- Surveillance
Bei Problemen und Anomalien bietet Docker Compose Werkzeuge, um die Protokolldateien (Logs) der Container zu untersuchen. Diese können mit dem folgenden Befehl abgerufen werden:
$ docker-compose logs
Einige Tipps zur Verwendung von Docker Compose
Einige Tipps zur Nutzung von Docker ComposeVerwende so oft wie möglich zuverlässige Images aus sicheren Quellen. Nicht gepflegte oder veraltete Images können Sicherheits- oder Kompatibilitätsprobleme verursachen.
- Trenne deine Umgebungen: Verwende je nach Umgebung (z. B. Test, Produktion, Entwicklung) unterschiedliche Docker-Compose-Dateien. So kannst du deine Arbeit gut segmentieren und die Konfigurationen sauber und organisiert halten.
- Nomenklatur für die Benennung: Verwende verständliche und aussagekräftige Namen für die Benennung deiner Dienste.
Isoliere die Netzwerke: Dies erhöht die Sicherheit und vermeidet Konflikte beim Öffnen von Ports. - Überwache die Ressourcen (CPU, Speicher, Festplattenplatz) deiner Container aufmerksam, um sicherzustellen, dass sie optimal funktionieren.
- Führe regelmäßige Backups deiner Datenträger durch, um im Falle eines Problems einen Datenverlust zu vermeiden.
- Aktualisiere deine Images regelmäßig, um eine bessere Stabilität zu gewährleisten und mögliche Sicherheitsprobleme zu vermeiden.
Fazit
Wir haben in diesem Artikel gesehen, dass Docker Compose ein mächtiges Werkzeug für den Einsatz und die Verwaltung von Multi-Container-Anwendungen ist. Mit einer sorgfältig konfigurierten YAML-Datei kannst du deine Dienste, Volumes und Netzwerke effizient orchestrieren.
Vergiss nicht, die Best Practices einzuhalten, um stabile und funktionierende Anwendungen zu gewährleisten.