Zum Hauptinhalt springen Skip to page footer

Einführung in Docker-Compose: Einfache Verwaltung und Skalierung von Containern

| Tutorial | Docker

Docker-Compose ist ein leistungsstarkes Tool, das die einfache Verwaltung und Skalierung mehrerer Docker-Container in einer Anwendung ermöglicht. Erfahren Sie, wie Sie Docker-Compose-Dateien erstellen und konfigurieren, Dienste starten und stoppen, Container skalieren sowie Dienste überwachen und protokollieren können. Nutzen Sie die Vorteile von Docker-Compose, um komplexe Anwendungen effizient zu verwalten.

Einführung in Docker-Compose

Docker-Compose ist ein Tool, das die einfache Verwaltung mehrerer Docker-Container in einer Anwendung ermöglicht. Dies vereinfacht die Bereitstellung und Verwaltung komplexer Anwendungen, da mehrere Container in einer einzigen Datei definiert und konfiguriert werden können. 

Grundlagen von Docker-Compose

Docker-Compose verwendet eine YAML-basierte Konfigurationsdatei, um verschiedene Container für Ihre Anwendung zu definieren und zu konfigurieren. Diese Datei enthält Informationen über den benötigten Container, die Netzwerkkonfiguration, Volume-Mounts und andere zugehörige Einstellungen.

Eine typische Docker Compose-Datei kann mehrere Services definieren. Jeder Service repräsentiert einen Container innerhalb der Anwendung. Die Datei enthält Informationen wie den Namen des Dienstes, das verwendete Docker-Image, Ports, die für den Zugriff auf den Container geöffnet werden sollen, Umgebungsvariablen, die an den Container übergeben werden sollen und andere Konfigurationsoptionen. Mit Docker-Compose können Sie auch Netzwerke erstellen und Container miteinander verbinden. Dies erleichtert die Kommunikation zwischen Containern in Ihrer Anwendung. Darüber hinaus können Volumes definiert werden, um Daten zwischen Containern auszutauschen oder persistenten Speicher für bestimmte Container bereitzustellen.

Sobald die Docker-Compose-Datei erstellt ist, können Sie Ihre Anwendung mit einem einzigen Befehl bereitstellen und starten. Docker-Compose übernimmt das Erstellen und Starten von Containern gemäß Ihrer Konfiguration. Dies vereinfacht die Erstellung und Verwaltung mehrerer Container erheblich. 

Vorteile der Verwendung von Docker-Compose

Die Verwendung von Docker Compose bietet viele Vorteile für die Anwendungsentwicklung und -bereitstellung.

  • Einfache Konfiguration: Mit Docker-Compose können Sie Ihre gesamte Anwendungsinfrastruktur in einer Datei definieren. Dies vereinfacht die Konfiguration und erleichtert die Wartung von Anwendungen.
  • Skalierbarkeit: Sie können Ihre Anwendung einfach erweitern, indem Sie Services in Docker-Compose-Dateien definieren. Wenn Sie mehr Instanzen eines bestimmten Dienstes benötigen, können Sie die Konfiguration einfach anpassen.
  • Isolierung: Docker Compose ermöglicht Container Isolation. Jeder Dienst wird in einem eigenen Container ausgeführt, wodurch Abhängigkeiten und Interaktionen zwischen Anwendungskomponenten sauber getrennt werden.
  • Wiederverwendbarkeit: Sie können Docker-Compose-Dateien in verschiedenen Umgebungen verwenden, um Ihre Anwendung konsistent bereitzustellen. Dies erleichtert die Zusammenarbeit und den Austausch zwischen Entwicklungs- und Produktionsumgebungen.
  • Effiziente Entwicklungsumgebung: Mit Docker Compose können Entwickler schnell und einfach lokale Entwicklungsumgebungen erstellen. Durch die Verwendung derselben Docker-Compose-Datei wie in der Produktionsumgebung bleibt die Entwicklungsumgebung so nah wie möglich an der realen Umgebung. 

Insgesamt bietet Docker-Compose eine benutzerfreundliche Möglichkeit, komplexe Multi-Container-Anwendungen zu verwalten und bereitzustellen. Dies vereinfacht die Entwicklung, Skalierung und Wartung von Container-Anwendungen und erhöht die Portabilität und Konsistenz von Anwendungen. 

Docker-Compose-Dateien erstellen und konfigurieren

Docker-Compose ist ein Tool, das die einfache Verwaltung mehrerer Docker-Container in einer Anwendung ermöglicht. Docker-Compose verwendet eine YAML-basierte Dateikonfiguration, um verschiedene Container für Ihre Anwendung zu definieren und zu konfigurieren. 

Definition von Services und Netzwerken

Dienste und Netzwerke werden in Docker-Compose-Dateien definiert. Ein Service ist ein Container innerhalb einer Anwendung. Sie können mehrere Services in der Datei definieren, um verschiedene Komponenten Ihrer Anwendung zu repräsentieren.

Eine Service-Definition enthält verschiedene Eigenschaften wie den Namen des Services, das zu verwendende Docker-Image, die Ports, die für den Zugriff auf den Container geöffnet werden sollen, die Netzwerkkonfiguration und andere Konfigurationsoptionen. Unten finden Sie ein Beispiel für eine einfache Service-Definition in einer Docker Compose-Datei. 

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

In diesem Beispiel wird ein Dienst namens „web“ definiert, der das Docker-Image „nginx:latest“ verwendet. Der Container leitet den Port 80 des Containers an den Port 8080 des Hosts weiter.

Mit Docker-Compose können auch Netzwerke definiert werden, die die Kommunikation zwischen Containern ermöglichen. Netzwerke können als Standard-Bridge-Netzwerke oder als benutzerdefinierte Netzwerke erstellt werden. Nachfolgend finden Sie ein Beispiel für eine benutzerdefinierte Netzwerkdefinition in einer Docker-Compose-Datei. 

networks:
  mynetwork:
    driver: bridge

In diesem Beispiel wird ein benutzerdefiniertes Netzwerk mit dem Namen "mynetwork" und dem Bridge-Treiber erstellt.

Konfiguration von Umgebungsvariablen und Volumes

Mit Docker-Compose können Sie Umgebungsvariablen und Volumes für Container innerhalb Ihrer Anwendung konfigurieren.

Über Umgebungsvariablen können Konfigurationsoptionen an den Container übergeben werden. Diese können in einer Docker-Compose-Datei definiert oder aus einer externen .env-Datei geladen werden. Im Folgenden finden Sie ein Beispiel für die Definition einer Umgebungsvariablen in einer Docker-Compose-Datei. 

services:
  web:
    image: nginx:latest
    environment:
      - DEBUG=true
      - PORT=8080

In diesem Beispiel werden für den Dienst „Web“ die Umgebungsvariablen „DEBUG“ und „PORT“ mit den Werten „true“ bzw. „8080“ definiert.

Volumes ermöglichen den Datenaustausch zwischen Containern und die persistente Speicherung von Daten. Volumes können als Named Volumes oder als Bind-Mounts konfiguriert werden. Nachfolgend ein Beispiel für die Konfiguration eines Bind-Mounts in einer Docker-Compose-Datei. 

services:
  db:
    image: postgres:latest
    volumes:
      - ./data:/var/lib/postgresql/data

In diesem Beispiel wird das Verzeichnis „./data“ auf dem Host mit dem Verzeichnis „/var/lib/postgresql/data“ im Container für den Dienst „db“ verknüpft.

Durch die Definition von Diensten, Netzwerken, Umgebungsvariablen und Volumes in Docker-Compose-Dateien erleichtert Docker-Compose die Konfiguration von Containern innerhalb Ihrer Anwendung. Diese Datei vereinfacht die Einrichtung und Verwaltung mehrerer Container, da Sie Ihre Anwendung mit einem einzigen Befehl bereitstellen und starten können. 

Mehrere Container mit Docker-Compose verwalten

Docker-Compose ist ein Tool, das die einfache Verwaltung mehrerer Docker-Container in einer Anwendung ermöglicht. Mit Docker-Compose können Sie den Container Ihrer Anwendung in einer einzigen Datei definieren und konfigurieren. Zusätzlich bietet Docker-Compose die Möglichkeit, Dienste zu starten, zu stoppen, zu skalieren, zu überwachen und zu protokollieren. 

Starten und Stoppen von Diensten

Docker-Compose erleichtert das Starten und Beenden von Diensten, die in Docker-Compose-Dateien definiert sind. Sie können alle Dienste in der Datei mit dem Befehl „docker-compose up“ starten. 

docker-compose up

Dieser Befehl erstellt und startet alle Container entsprechend der Konfiguration in der Docker-Compose-Datei. Die Ausgabe zeigt die Protokolle der gestarteten Dienste.

Um den Dienst zu beenden und den Container zu entfernen, verwenden Sie den Befehl docker-compose down

docker-compose down

Dieser Befehl stoppt den Dienst und entfernt den Container, der mit der Docker-Compose-Datei erstellt wurde.

Skalierung von Containern

Mit Docker-Compose können Sie die Anzahl der Instanzen Ihres Dienstes skalieren. Wenn Sie beispielsweise mehrere Instanzen Ihres Dienstes ausführen möchten, können Sie den Befehl docker-compose up mit der Option --scale verwenden. 

docker-compose up --scale service_name=num_instances

Ersetzen Sie „service_name“ durch den Namen Ihres Dienstes und „num_instances“ durch die Anzahl der gewünschten Instanzen. Docker-Compose erstellt automatisch die gewünschte Anzahl von Containern für Ihren Dienst.

Überwachung und Protokollierung von Diensten

Docker-Compose bietet Funktionen zur Überwachung und Protokollierung von Diensten. Sie können den Befehl „docker-compose logs“ verwenden, um die Protokolle des Dienstes anzuzeigen. 

docker-compose logs

Dieser Befehl zeigt Protokolle für alle Dienste an, die in der Docker-Compose-Datei definiert sind.

Um nur die Protokolle eines bestimmten Dienstes anzuzeigen, können Sie den Dienstnamen als Argument angeben. 

docker-compose logs service_name

Um den Status von Diensten und Containern anzuzeigen, können Sie auch den Befehl docker-compose ps verwenden.

docker-compose ps

Dieser Befehl zeigt Informationen zu den gestarteten Diensten und den zugehörigen Containern an, einschließlich Status, Port-Zuordnungen und Container-IDs.

Mit den Überwachungs- und Protokollierungsdiensten von Docker-Compose können Sie den Status und das Verhalten der Container in Ihrer Anwendung überwachen und bei Bedarf auf Probleme reagieren.