Einführung
Die Entwicklung von Anwendungen mit Docker kann schwierig werden, wenn mehrere Dienste und Container unter einen Hut gebracht werden. Erfahren Sie mehr über Docker Compose, das Tool, mit dem Sie Multi-Container-Anwendungsumgebungen ausführen können.
In diesem Tutorial erfahren Sie alles über Docker Compose, die Vorteile der Verwendung dieses Tools, seine Anwendungsfälle und Funktionen.
Was ist Docker Compose?
Eine Anwendung kann aus mehreren Containern bestehen, auf denen unterschiedliche Dienste ausgeführt werden. Es kann mühsam sein, Container manuell zu starten und zu verwalten, daher hat Docker ein nützliches Tool entwickelt, das dabei hilft, den Prozess zu beschleunigen – Docker Compose.
Docker Compose ist eine Software, die zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern verwendet wird. Es kann mehrere Container gleichzeitig in der Produktions-, Staging-, Entwicklungs-, Test- und CI-Umgebung verarbeiten. Verwenden Sie daher Docker Compose, um den gesamten Softwareentwicklungslebenszyklus (SDLC) zu verwalten.
Docker Compose funktioniert, indem es Regeln anwendet, die in einer docker-compose.yaml definiert sind Datei. Die YAML-Datei konfiguriert die Dienste der Anwendung und enthält Regeln, die angeben, wie sie ausgeführt werden sollen. Wenn die Datei vorhanden ist, können Sie alle Dienste mit einem einzigen Befehl starten, stoppen oder neu erstellen. Außerdem können Sie den Status eines Dienstes überprüfen, Protokollausgaben anzeigen und einmalige Befehle ausführen.
Die Installation von Docker Compose ist einfach. Eine Schritt-für-Schritt-Anleitung finden Sie unter:
So installieren Sie Docker Compose unter Ubuntu 18.04 So installieren Sie Docker Compose unter CentOS 7 So installieren Sie Docker Compose unter Ubuntu 20.04Docker Compose-Anwendungsfälle
Häufige Anwendungsfälle von Docker Compose sind:
- Automatisierte Testumgebungen . Compose unterstützt automatisiertes Testen, was ein wesentlicher Bestandteil von CI/CD ist, da es die erforderliche Testumgebung einfach erstellen und zerstören kann. Entwickler können die Umgebung definieren und konfigurieren, die für die Ausführung automatisierter End-to-End-Tests erforderlich ist, indem sie die entsprechende Docker Compose-Datei verwenden.
- Einzelne Host-Bereitstellungen . In Docker Compose sind Container so konzipiert, dass sie auf einem einzelnen Host ausgeführt werden, da sie sich traditionell auf Entwicklungs- und Test-Workflows konzentriert haben.
- Entwicklungsumgebungen . Compose ist eine schnelle und einfache Möglichkeit, Projekte zu starten, da es schnell neue isolierte Entwicklungsumgebungen erstellen kann. Die Software dokumentiert und konfiguriert alle Dienstabhängigkeiten der Anwendung (einschließlich Datenbanken, Caches, Webdienst-APIs usw.). Es ermöglicht Ihnen, einen oder mehrere Container für jede Abhängigkeit mit einem einzigen Befehl zu erstellen und zu starten.
Vorteile von Docker Compose
Hier sind einige der Hauptvorteile der Verwendung von Docker Compose:
- Schnelle und einfache Konfiguration. Dank YAML-Skripten und Umgebungsvariablen können Sie Anwendungsdienste einfach konfigurieren oder ändern.
- Sicher interne Kommunikation. Compose erstellt ein Netzwerk, in dem alle Dienste gemeinsam genutzt werden können. Dies fügt der App eine zusätzliche Sicherheitsebene hinzu, da auf die Dienste nicht von außen zugegriffen werden kann.
- Portabilität und CI/CD-Unterstützung. Da alle Dienste in der docker-compose-Datei definiert sind, können Entwickler einfach auf die gesamte Konfiguration zugreifen und sie freigeben. Durch Abrufen der YAML-Datei und des Quellcodes können sie die Umgebung innerhalb weniger Minuten starten. Dies trägt dazu bei, eine effiziente CI/CD-Pipeline aufzubauen und zu ermöglichen.
- Effiziente Nutzung von Ressourcen. Mit Docker Compose können Sie mehrere isolierte Umgebungen auf einem Host hosten. Wenn Sie alles auf einer einzigen Hardware ausführen, können Sie viele Ressourcen sparen. Seine Funktionen, die es ihm ermöglichen, eine Konfiguration zwischenzuspeichern und vorhandene Container wiederzuverwenden, tragen ebenfalls zur Ressourceneffizienz bei.
Docker Compose-Funktionen
Es gibt mehrere prominente Docker Compose-Funktionen, die die oben genannten Vorteile bieten.
Hosting mehrerer isolierter Umgebungen auf einem einzigen Host
Compose hält Umgebungen auf einem einzelnen Host mithilfe von Projektnamen voneinander isoliert.
Standardmäßig ist der Projektname der Basisname des Projektverzeichnisses, während das Projektverzeichnis das Basisverzeichnis der docker-compose-Datei ist. Sie können die Standardwerte ändern:
- Legen Sie den Projektnamen fest mit
-p
Befehlszeilenoption oderCOMPOSE_PROJECT_NAME
Umgebungsvariable. - Legen Sie das Projektverzeichnis fest unter Verwendung des
--project-directory
Umgebungsvariable.
Sie können diese Funktion auf einem Entwicklungshost verwenden, um stabile Kopien jedes Funktionszweigs Ihres Projekts auszuführen, indem Sie mehrere Kopien der Umgebung unter verschiedenen Namen erstellen.
Wenn Sie auf einem CI-Server oder einem gemeinsam genutzten Host arbeiten, möchten Sie sicherstellen, dass sich die Builds nicht gegenseitig stören. Setzen Sie dazu die Projektnamen auf eindeutige Build-Nummern.
Unterstützende Umgebungsvariablen
Sie können Container für verschiedene Umgebungen oder Benutzer anpassen, indem Sie Umgebungsvariablen in der docker-compose-Datei hinzufügen. Das gibt Ihnen mehr Flexibilität beim Einrichten von Containern mit Compose, da die Variablenwerte nicht in der Konfiguration fest codiert sind.
Die Variablenwerte können in der Shell-Umgebung festgelegt werden (von der aus Sie docker-compose
ausführen ) oder in einer .env-Datei (im Projektverzeichnis gespeichert). Standardmäßig wendet Docker Compose die in der .env-Datei angegebenen Werte an. In der Shell-Umgebung festgelegte Werte überschreiben jedoch diejenigen aus der .env-Datei.
Sie können diese Funktion für alles verwenden, von der sicheren Bereitstellung von Kennwörtern bis hin zur Angabe einer Softwareversion.
Speichern von Volumendaten
Ein weiteres großartiges Feature von Docker Compose ist, dass es Daten speichert, die von den Diensten verwendet werden. Daher müssen Sie sich keine Gedanken über den Verlust von in Containern erstellten Daten machen. Wenn Container aus früheren Läufen vorhanden sind, findet Compose sie und kopiert ihre Volumes in den neuen Lauf.
Wiederverwendung bestehender Container
Compose erstellt nur Container neu, die sich seit der letzten Ausführung geändert haben. Wenn es keine Änderung gibt, wird der vorhandene Container wiederverwendet.
Diese Funktion basiert auf der Fähigkeit der Software, Containerkonfigurationen zwischenzuspeichern, sodass Sie Ihre Dienste schneller einrichten können.
Grundlegende Befehle für Docker Compose
Die grundlegende Syntax zum Ausführen von Docker Compose-Befehlen lautet:
docker-compose [command]
Unten finden Sie einige der grundlegendsten Docker Compose-Befehle und wofür sie verwendet werden.
Befehl | Beschreibung |
---|---|
docker-compose --help | zeige Hilfe, Gebrauchsanweisungen für und Argumente für den Docker-Compose-Befehl |
docker-compose build | Suchen Sie nach allen Diensten, die den build: enthalten -Anweisung in der Datei docker-compose.yml und führen Sie einen docker build aus für jeden |
docker-compose run | Einen einmaligen Befehl für einen Dienst ausführen |
docker-compose up | Container für einen Dienst erstellen, (neu) erstellen, starten und anhängen |
docker-compose -f [command] | Geben Sie den Speicherort einer Docker-Compose-Konfigurationsdatei an, indem Sie -f hinzufügen Flagge |
docker-compose start | vorhandene Container für einen Dienst starten |
docker-compose stop | laufende Container stoppen (ohne sie zu entfernen) |
docker-compose pause | laufende Container eines Dienstes pausieren |
docker-compose unpause | Pausierte Container eines Dienstes wieder aufheben |
docker-compose down | Stoppen Sie Container (und entfernen Sie Container, Netzwerke, Volumes und Images) |
docker-compose ps | Container in der Docker-Compose-Konfigurationsdatei auflisten |
docker-compose images | Bilder auflisten, die von erstellten Containern verwendet werden |
docker-compose ls | laufende Compose-Projekte auflisten |
Wie verwende ich Docker Compose?
Es gibt drei Schritte zur Verwendung von Compose:
1. Der erste Schritt besteht darin, ein Dockerfile zu erstellen, um die Anwendungsumgebung zu definieren. Die Datei erstellt Docker-Images, die als Basis für die Container verwendet werden.
2. Als Nächstes müssen Sie die Dienste in einer Compose-Datei definieren. Erstellen Sie eine neue Datei im Projektverzeichnis unter dem Namen docker-compose.yml und definieren Sie Ihre Dienste mithilfe der YAML-Syntax. Ein Beispiel für eine solche Datei würde den folgenden Inhalt enthalten:
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
3. Führen Sie schließlich die App mit der Docker Compose CLI aus und verwalten Sie sie. Sie können ein einzelnes docker-compose up
ausführen Befehl zum Starten der gesamten Anwendung in einer Instanz.