Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verwaltung von Multi-Container-Anwendungen | Arbeiten mit Docker Compose
Docker Grundlagen

bookVerwaltung von Multi-Container-Anwendungen

Beim Erstellen moderner Anwendungen ist es häufig erforderlich, mehrere Dienste gleichzeitig auszuführen – beispielsweise Webserver, Datenbanken und Caches –, die miteinander kommunizieren und als einheitliches System arbeiten müssen. Docker Compose vereinfacht diesen Prozess, indem Sie alle Ihre Dienste, deren Abhängigkeiten und deren Interaktionen in einer einzigen docker-compose.yml-Datei definieren können.

Definieren von Abhängigkeiten und Service-Links in docker-compose.yml

In Ihrer docker-compose.yml kann jeder Dienst Abhängigkeiten deklarieren und angeben, wie er sich mit anderen verbindet. Der Schlüssel depends_on ermöglicht es, die Startreihenfolge der Dienste festzulegen, sodass beispielsweise die Datenbank läuft, bevor Ihre Anwendung eine Verbindung herstellt. Zusätzlich erstellt Compose automatisch ein Standardnetzwerk für Ihr Projekt, wodurch Dienste sich gegenseitig anhand des Servicenamens im Netzwerk finden und miteinander kommunizieren können.

Angenommen, Sie haben eine Webanwendung, die auf eine Datenbank angewiesen ist. In Ihrer Compose-Datei definieren Sie die Dienste wie folgt:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

Hier gilt:

  • Der app-Dienst ist abhängig von db;
  • Compose startet den Datenbank-Container vor der Anwendung;
  • Beide Dienste können sich innerhalb des Compose-Netzwerks gegenseitig über die Servicenamen als Hostnamen ansprechen.

Strategien zum Skalieren von Diensten und Aktualisieren von Konfigurationen

Docker Compose ermöglicht eine einfache horizontale Skalierung von Diensten. Wenn Ihre Anwendung mehr Traffic bewältigen muss, können Sie die Anzahl der Container für einen Dienst mit dem --scale-Flag beim Ausführen von docker compose up erhöhen.

Um drei Instanzen Ihres Anwendungsdienstes zu starten, verwenden Sie:

docker compose up --scale app=3
  • Dieser Befehl startet drei Container für den Dienst app;
  • Alle Container sind mit demselben Netzwerk verbunden und können Ressourcen wie eine Datenbank gemeinsam nutzen;
  • Beim Skalieren sollten Ihre Dienste zustandslos sein oder mehrere Instanzen korrekt verarbeiten können.

Das Aktualisieren von Konfigurationen in einer Compose-Umgebung ist unkompliziert:

  • Ändern Sie Ihre docker-compose.yml – zum Beispiel durch Anpassen von Umgebungsvariablen, Ressourcenlimits oder Service-Images;
  • Übernehmen Sie die Änderungen mit folgendem Befehl:
docker compose up -d
  • Dieser Befehl erstellt nur die Dienste neu, deren Konfiguration sich geändert hat, wodurch Ausfallzeiten minimiert werden.

Überwachen und Troubleshooting von Multi-Container-Anwendungen mit Compose

Beim Betrieb mehrerer Container sind Überwachung und Fehlersuche entscheidend. Docker Compose stellt Werkzeuge bereit, mit denen Sie den Zustand und die Logs Ihrer Dienste beobachten können. Sie können die Ausgaben aller Container in Echtzeit anzeigen mit:

docker compose logs -f

Dieser Befehl streamt die Logs aller Dienste und erleichtert das Erkennen von Fehlern oder Problemen, sobald sie auftreten. Wenn Sie sich auf einen bestimmten Dienst konzentrieren möchten, geben Sie dessen Namen an:

docker compose logs db

Zur Fehlersuche können Sie in einen laufenden Container wechseln mit:

docker compose exec app sh

Dieser Befehl öffnet eine Shell im app-Container, sodass Sie Dateien inspizieren, Diagnosebefehle ausführen oder Umgebungsvariablen prüfen können. Die Überwachung der Ressourcennutzung und des Container-Zustands ist ebenfalls mit den Standard-Docker-Tools wie docker stats möglich.

1. Welcher Schlüssel in einer docker-compose.yml-Datei stellt sicher, dass ein Service vor einem anderen startet?

2. Wie skalieren Sie einen Service namens worker mit Docker Compose auf fünf Instanzen?

3. Welchen Befehl würden Sie verwenden, um Live-Logs aller laufenden Services in einer Compose-Anwendung anzuzeigen?

question mark

Welcher Schlüssel in einer docker-compose.yml-Datei stellt sicher, dass ein Service vor einem anderen startet?

Select the correct answer

question mark

Wie skalieren Sie einen Service namens worker mit Docker Compose auf fünf Instanzen?

Select the correct answer

question mark

Welchen Befehl würden Sie verwenden, um Live-Logs aller laufenden Services in einer Compose-Anwendung anzuzeigen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain how to use environment variables in docker-compose.yml?

What are some best practices for managing secrets with Docker Compose?

How do I connect an external service (like Redis) to my Compose network?

Awesome!

Completion rate improved to 7.14

bookVerwaltung von Multi-Container-Anwendungen

Swipe um das Menü anzuzeigen

Beim Erstellen moderner Anwendungen ist es häufig erforderlich, mehrere Dienste gleichzeitig auszuführen – beispielsweise Webserver, Datenbanken und Caches –, die miteinander kommunizieren und als einheitliches System arbeiten müssen. Docker Compose vereinfacht diesen Prozess, indem Sie alle Ihre Dienste, deren Abhängigkeiten und deren Interaktionen in einer einzigen docker-compose.yml-Datei definieren können.

Definieren von Abhängigkeiten und Service-Links in docker-compose.yml

In Ihrer docker-compose.yml kann jeder Dienst Abhängigkeiten deklarieren und angeben, wie er sich mit anderen verbindet. Der Schlüssel depends_on ermöglicht es, die Startreihenfolge der Dienste festzulegen, sodass beispielsweise die Datenbank läuft, bevor Ihre Anwendung eine Verbindung herstellt. Zusätzlich erstellt Compose automatisch ein Standardnetzwerk für Ihr Projekt, wodurch Dienste sich gegenseitig anhand des Servicenamens im Netzwerk finden und miteinander kommunizieren können.

Angenommen, Sie haben eine Webanwendung, die auf eine Datenbank angewiesen ist. In Ihrer Compose-Datei definieren Sie die Dienste wie folgt:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

Hier gilt:

  • Der app-Dienst ist abhängig von db;
  • Compose startet den Datenbank-Container vor der Anwendung;
  • Beide Dienste können sich innerhalb des Compose-Netzwerks gegenseitig über die Servicenamen als Hostnamen ansprechen.

Strategien zum Skalieren von Diensten und Aktualisieren von Konfigurationen

Docker Compose ermöglicht eine einfache horizontale Skalierung von Diensten. Wenn Ihre Anwendung mehr Traffic bewältigen muss, können Sie die Anzahl der Container für einen Dienst mit dem --scale-Flag beim Ausführen von docker compose up erhöhen.

Um drei Instanzen Ihres Anwendungsdienstes zu starten, verwenden Sie:

docker compose up --scale app=3
  • Dieser Befehl startet drei Container für den Dienst app;
  • Alle Container sind mit demselben Netzwerk verbunden und können Ressourcen wie eine Datenbank gemeinsam nutzen;
  • Beim Skalieren sollten Ihre Dienste zustandslos sein oder mehrere Instanzen korrekt verarbeiten können.

Das Aktualisieren von Konfigurationen in einer Compose-Umgebung ist unkompliziert:

  • Ändern Sie Ihre docker-compose.yml – zum Beispiel durch Anpassen von Umgebungsvariablen, Ressourcenlimits oder Service-Images;
  • Übernehmen Sie die Änderungen mit folgendem Befehl:
docker compose up -d
  • Dieser Befehl erstellt nur die Dienste neu, deren Konfiguration sich geändert hat, wodurch Ausfallzeiten minimiert werden.

Überwachen und Troubleshooting von Multi-Container-Anwendungen mit Compose

Beim Betrieb mehrerer Container sind Überwachung und Fehlersuche entscheidend. Docker Compose stellt Werkzeuge bereit, mit denen Sie den Zustand und die Logs Ihrer Dienste beobachten können. Sie können die Ausgaben aller Container in Echtzeit anzeigen mit:

docker compose logs -f

Dieser Befehl streamt die Logs aller Dienste und erleichtert das Erkennen von Fehlern oder Problemen, sobald sie auftreten. Wenn Sie sich auf einen bestimmten Dienst konzentrieren möchten, geben Sie dessen Namen an:

docker compose logs db

Zur Fehlersuche können Sie in einen laufenden Container wechseln mit:

docker compose exec app sh

Dieser Befehl öffnet eine Shell im app-Container, sodass Sie Dateien inspizieren, Diagnosebefehle ausführen oder Umgebungsvariablen prüfen können. Die Überwachung der Ressourcennutzung und des Container-Zustands ist ebenfalls mit den Standard-Docker-Tools wie docker stats möglich.

1. Welcher Schlüssel in einer docker-compose.yml-Datei stellt sicher, dass ein Service vor einem anderen startet?

2. Wie skalieren Sie einen Service namens worker mit Docker Compose auf fünf Instanzen?

3. Welchen Befehl würden Sie verwenden, um Live-Logs aller laufenden Services in einer Compose-Anwendung anzuzeigen?

question mark

Welcher Schlüssel in einer docker-compose.yml-Datei stellt sicher, dass ein Service vor einem anderen startet?

Select the correct answer

question mark

Wie skalieren Sie einen Service namens worker mit Docker Compose auf fünf Instanzen?

Select the correct answer

question mark

Welchen Befehl würden Sie verwenden, um Live-Logs aller laufenden Services in einer Compose-Anwendung anzuzeigen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3
some-alt