Verpassen Sie nicht die zeitlich begrenzten Angebote!

Was ist Docker Compose und wie wird es verwendet?

Was ist Docker Compose und wie wird es verwendet?

Docker Compose ist ein Tool zum Definieren und Ausführen von Anwendungen mit mehreren Containern. Entwickler verwenden es, um die Verwaltung miteinander verbundener Dienste zu vereinfachen, etwa durch die Kombination einer Front-End-Anwendung mit einem Datenbankserver, sodass sich der gesamte Anwendungsstack einfacher verwalten lässt.

Mithilfe einer einzigen YAML-Datei ermöglicht Docker Compose die Definition der für eine Anwendung erforderlichen Infrastruktur, einschließlich des zu verwendenden Images, der internen Netzwerkkonfiguration und der einzubindenden persistenten Volumes. Anschließend können Sie alle Container auf Grundlage dieser Konfiguration erstellen, indem Sie den Befehl docker compose up ausführen.

Während des gesamten Projektlebenszyklus können Sie Container mit weiteren Docker-Compose-Befehlen verwalten. Beispielsweise fährt docker compose down alle Dienste herunter, während docker compose ps die in der YAML-Datei definierten, aktuell laufenden Container auflistet.

Um Docker Compose zu verwenden, müssen Docker Engine und Docker CLI installiert sein. Anschließend richten Sie das Tool ein, indem Sie das Plugin über den Paketmanager Ihres Systems oder über Homebrew installieren. Wenn Sie Docker Desktop verwenden, ist dieses Orchestrierungs-Tool bereits standardmäßig enthalten.

Lesen Sie weiter, um mehr darüber zu erfahren, was Docker Compose ist und wie Sie es zur Verwaltung von Multi-Container-Anwendungen einsetzen.

Was ist Docker Compose?

Docker Compose ist ein Tool, mit dem Entwickler Multi-Container-Docker-Anwendungen definieren und ausführen können. Sein Hauptzweck besteht darin, die Verwaltung mehrerer Dienste zu vereinfachen, zu zentralisieren und zu vereinheitlichen.

Docker Compose basiert auf einer einzelnen YAML-Datei, in der Sie alle Aspekte der Container Ihrer Anwendung definieren: welches Image jeder Service verwenden soll, wie die Services miteinander kommunizieren und wo persistente Daten gespeichert werden. Auf Grundlage dieser Konfiguration können Sie die Container erstellen und verwalten.

Wie funktioniert Docker Compose?

Docker Compose funktioniert, indem in der YAML-Datei drei zentrale Komponenten einer Multi-Container-Anwendung definiert werden: Services, Netzwerke und Volumes.

Wenn Sie eine Anwendung auf Grundlage der YAML-Datei starten, lädt Docker Compose das Image herunter oder erstellt es, um den jeweiligen Service zu erzeugen, der als Container ausgeführt wird.

Anschließend erstellt Docker Compose ein internes Netzwerk, damit Services miteinander kommunizieren können, und initialisiert Volumes zur Speicherung persistenter Daten, die von Containern gemeinsam genutzt werden können. Außerdem richtet Docker Compose Umgebungsvariablen für jeden Service ein, damit Daten übergeben werden können, ohne Werte direkt im Image des jeweiligen Services hart zu kodieren.

Alle Konfigurationen – einschließlich des zu verwendenden Images, der Netzwerkkonfiguration, der Einbindung persistenter Volumes und der einzuschließenden Umgebungsvariablen – werden in der YAML-Datei definiert. Dadurch können Sie alle Container Ihrer Anwendung über diese Datei erstellen und verwalten.

Beispiel einer Docker-Compose-YAML-Datei

Hier ist ein Beispiel für eine Docker-Compose-YAML-Datei, die ein Projekt mit zwei miteinander verbundenen Services beschreibt: eine einfache Webanwendung und eine Redis-Cache-Instanz.

Um die Konfiguration besser zu verstehen, sehen Sie sich die Kommentare im Beispiel an. Sie erklären, welche Funktion die jeweilige Zeile erfüllt.

services:

  web: # Service für die Webanwendung

    build: . # Erstellt das Image aus dem Dockerfile im aktuellen Verzeichnis

    ports:

      - "8000:5000" # Ordnet Host-Port 8000 dem Container-Port 5000 zu

    depends_on:

      - redis # Stellt sicher, dass 'redis' vor 'web' gestartet wird

    volumes:

      - ./:/app # Bindet das aktuelle Verzeichnis im Container unter /app ein (Bind-Mount)

    environment:

      REDIS_HOST: ${REDIS_HOST:-redis} # Setzt REDIS_HOST aus der Umgebung oder verwendet standardmäßig 'redis'

  redis: # Service für den Redis-Cache

    image: redis:6 # Verwendet das offizielle Redis-Image (Version 6)

    expose:

      - "6379" # Stellt Port 6379 anderen Services innerhalb des Docker-Netzwerks zur Verfügung

    volumes:

      - redis_data:/data # Speichert Redis-Daten dauerhaft in einem benannten Volume

volumes:

  redis_data: {} # Deklariert das benannte Volume zur persistenten Speicherung der Redis-Daten

Beachten Sie, dass der genaue Inhalt der YAML-Datei je nach Anwendung, Services und verwendeter Konfiguration variieren kann.

So installieren Sie Docker Compose

Die Schritte zur Installation von Docker Compose variieren je nach Docker-Umgebung und Betriebssystem.

Wenn Sie Docker Desktop verwenden, ist Compose bereits vorkonfiguriert. Wenn Sie mit der Docker CLI arbeiten, können Sie das Compose-Plugin entweder aus dem offiziellen Repository installieren oder manuell herunterladen. Im Folgenden wird die Installation über das offizielle Repository erläutert, da sich dadurch zukünftige Updates einfacher durchführen lassen.

Bevor Sie fortfahren, stellen Sie sicher, dass Docker Engine und Docker CLI installiert und eingerichtet sind. Falls dies noch nicht der Fall ist, lesen Sie unsere Anleitung zur Installation von Docker auf Ubuntu, um die erforderlichen Schritte kennenzulernen.

Sobald Engine und CLI eingerichtet sind, installieren Sie Compose entsprechend Ihrem Betriebssystem. Unter Linux können Sie dies über den Paketmanager Ihres Systems erledigen. Auf Debian-basierten Distributionen verwenden Sie beispielsweise die folgenden Befehle:

sudo apt update
sudo apt install docker-compose-plugin

Wenn Sie ein Betriebssystem verwenden, das nicht auf Debian basiert, ersetzen Sie apt durch den entsprechenden Paketmanager. Verwenden Sie beispielsweise dnf, wenn Sie eine RHEL-basierte Distribution einsetzen.

macOS-Benutzer installieren Docker Compose über Homebrew mit folgendem Befehl:

brew install docker-compose

Unter Linux und macOS können Sie überprüfen, ob Docker Compose erfolgreich installiert wurde, indem Sie den folgenden Befehl ausführen:

docker compose version

Wenn Docker Compose korrekt konfiguriert ist, wird die installierte Versionsnummer im Terminal angezeigt.

So verwenden Sie Docker Compose

Mit Docker Compose können Sie die Konfiguration Ihrer Anwendung definieren, den Stack starten und seinen gesamten Lebenszyklus mit einem einzigen Tool verwalten.

Um zu veranschaulichen, wie Docker Compose in der Praxis eingesetzt wird, nehmen wir an, Sie möchten WordPress unter Ubuntu mit Docker ausführen. Der grundlegende Workflow sieht wie folgt aus.

  1. Verwenden Sie einen Texteditor wie nano, um eine YAML- oder YML-Konfigurationsdatei zu erstellen. Sie können einen beliebigen Namen wählen. Es empfiehlt sich jedoch, den Standardnamen docker-compose.yml oder compose.yaml zu verwenden, da dies die Verwaltung erleichtert.
  2. Definieren Sie in der YAML-Datei die Images für WordPress und MySQL sowie deren Konfiguration, beispielsweise Netzwerkeinstellungen, persistente Volumes und Abhängigkeiten.
  3. Verwenden Sie anschließend Docker Compose, um alle WordPress- und MySQL-Services mit den in der YAML-Datei definierten Einstellungen und Abhängigkeiten zu erstellen und zu starten:
docker compose up
  1. Im Verlauf eines Projekts müssen Sie Container etwa für Updates oder Wartungsarbeiten stoppen und entfernen. Führen Sie dazu den folgenden Befehl aus:
docker compose down

Sie können das Verhalten des Befehls docker compose mit Flags anpassen. Wenn Sie beispielsweise eine Konfigurationsdatei verwenden möchten, die nicht den Standardnamen verwendet, fügen Sie das Flag -f oder –file hinzu, um die Datei anzugeben, die Docker Engine verwenden soll:

docker compose -f your-compose-file.yaml up

Standardmäßig erstellt Docker Compose die Container im aktuellen Arbeitsverzeichnis. Wenn Sie die Anwendung in einem anderen Verzeichnis ausführen möchten, verwenden Sie das Flag –project-directory und geben den gewünschten Pfad an:

docker compose --project-directory /full/deployment/path up

Container im Hintergrund ausführen 📦

Docker Compose startet die bereitgestellte Anwendung standardmäßig in der aktuellen Terminalsitzung. Wenn Sie Ihr Projekt im Hintergrund erstellen und ausführen möchten, fügen Sie das Flag -d oder –detach hinzu.

Sie können auch mehrere Flags kombinieren, indem Sie sie mit einem Backslash trennen. Verwenden Sie beispielsweise den folgenden Befehl, um eine Anwendung aus einer YAML-Datei mit einem bestimmten Namen in einem anderen Verzeichnis bereitzustellen:

docker compose \
  -f /path/to/my-docker-compose.yaml \
  --project-directory /path/to \
  up

Wenn Sie Container entfernen, bleiben die Daten erhalten, da sie in persistenten Volumes gespeichert bleiben. Wenn Sie auch die Volumes entfernen möchten, verwenden Sie das Flag –volumes:

docker compose down --volumes

Häufige Docker-Compose-Befehle

Neben up und down gibt es weitere Docker-Compose-Befehle zur Verwaltung des gesamten Anwendungs-Stacks. Zu den am häufigsten verwendeten gehören:

  • docker compose ps – listet die von Docker Compose verwalteten laufenden Container auf. Die Ausgabe enthält unter anderem den Containernamen, das Image, den Befehl, den Service, den Status und die Ports.
  • docker compose logs – sammelt und zeigt Protokolle aller Services im Stack an. Wenn Sie das Flag -f hinzufügen, werden die Logs aller Container in Echtzeit ausgegeben.
  • docker compose start – startet vorhandene, zuvor gestoppte Container.
  • docker compose stop – stoppt laufende Container, ohne sie zu entfernen.
  • docker compose restart – startet Container sofort neu.
  • docker compose build – erzwingt den Neuaufbau von Images, die die build-Direktive in der YAML-Datei verwenden. Mit dem Flag –no-cache können Sie einen vollständigen Neuaufbau ohne Cache durchführen.
  • docker compose push – überträgt alle erstellten Images an ihre Remote-Registry.
  • docker compose pull – lädt alle Images herunter, die zum Aufbau des Stacks erforderlich sind, ohne Container zu starten.

Was ist der Unterschied zwischen Docker und Docker Compose?

Docker umfasst verschiedene Konzepte, Begriffe und Tools, die jeweils unterschiedliche Rollen innerhalb des Container-Ökosystems erfüllen. Wenn Sie diese verstehen, können Sie die Plattform effizienter einsetzen.

Docker Compose ist Teil des Docker-Ökosystems und wird häufig mit der Docker CLI verwechselt. Beide sind Kommandozeilenwerkzeuge zur Verwaltung von Docker-Ressourcen, unterscheiden sich jedoch in mehreren wichtigen Punkten.

Hier ist ein Vergleich zwischen Docker CLI und Docker Compose.

Aspekt Docker-CLI Docker Compose
AnwendungsfallAm besten geeignet für Setups mit einem einzelnen ContainerEntwickelt für Anwendungen mit mehreren Containern
OrchestrierungManuell – Sie müssen jeden Container einzeln startenAutomatisiert – alle Services werden über eine einzige YAML-Datei verwaltet
KonfigurationsformatDie Konfiguration wird direkt im Befehl mithilfe von Flags angegebenDie Konfiguration wird in einer YAML-Datei definiert
Wiederverwendbarkeit und PortabilitätDas Teilen und Reproduzieren komplexer Setups ist schwieriger, da die Konfiguration innerhalb einzelner Befehle definiert wirdKonfigurationen lassen sich leicht versionieren und wiederverwenden, da Projekte aus einer eigenständigen Konfigurationsdatei erstellt werden können
Test- und EntwicklungsumgebungenFür Entwicklungsumgebungen mit mehreren Services aufwendig zu verwaltenIdeal für die lokale Entwicklung, da alle Services in einer einzigen Datei definiert sind
Produktive Nutzung Für den Produktiveinsatz einfacher Projekte geeignet, jedoch weniger für Anwendungen mit mehreren ServicesKann auch in Produktionsumgebungen eingesetzt werden, wird bei größeren Projekten jedoch häufig durch Docker Swarm oder Kubernetes ersetzt
LernkurveFür Einsteiger einfacher, da nur eine Anwendung mit einem einzelnen Container verwaltet wirdEtwas steiler, dafür besser für reale Projekte geeignet

Was ist der nächste Schritt nach der Verwendung von Docker Compose?

Sobald Sie gelernt haben, mit Docker Compose zu arbeiten, können Sie das Tool verwenden, um Ihr Multi-Service-Projekt effizient zu verwalten. In der Praxis kann es jedoch erforderlich sein, direkt mit einzelnen Containern zu arbeiten, beispielsweise um einen neuen Service hinzuzufügen oder Probleme in einem bestimmten Teil Ihrer Anwendung zu beheben.

Vor diesem Hintergrund ist es wichtig zu lernen, wie Sie einen Docker-Container erstellen, damit Sie im gesamten Docker-Ökosystem effizienter arbeiten können.

Beachten Sie außerdem, dass Docker Compose und Container zwar zentrale Konzepte dieser Containerisierungsplattform sind, Sie jedoch weitere Tools kennenlernen müssen, wenn Ihr Projekt wächst. Beispielsweise können Sie zu Kubernetes oder Docker Swarm wechseln, um mehrere Container zuverlässiger zu orchestrieren.

Wenn Sie eine containerisierte Anwendung auf der VPS-Hosting-Lösung von Hostinger bereitstellen möchten, können Sie die Funktion Docker Compose Manager verwenden. Diese stellt ein in hPanel integriertes Verwaltungs-Dashboard bereit, mit dem Sie die Bereitstellung und Verwaltung Docker-basierter Anwendungen optimieren können.

Alle Tutorial-Inhalte auf dieser Website unterliegen Hostingers strengen redaktionellen Standards und Normen.

Author
Erstellt von

Faradilla Ayunindya

Faradilla, auch bekannt als Ninda, ist Content Marketing Specialist bei Hostinger mit über fünf Jahren Erfahrung und einem zehnjährigen Hintergrund als Linguistin. Sie möchte Technologie für alle zugänglich machen, indem sie komplexe Anleitungen in klare und leicht verständliche Schritt-für-Schritt-Guides verwandelt. In ihrer Freizeit interessiert sie sich für Biowissenschaften oder schaut gerne lustige Tiervideos. Vernetzen Sie sich mit ihr auf LinkedIn.

Was unsere Kunden sagen

Kommentar schreiben

Please fill the required fields.Bitte akzeptieren Sie die Datenschutzklausel.Bitte füllen Sie die erforderlichen Felder aus und akzeptieren Sie die Datenschutzklausel.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.