Verwendung von Docker Compose für Multi-Container-Anwendungen
10:26, 21.05.2026
1. Tools zur Verwaltung von Multi-Container-Anwendungen
Moderne Anwendungen laufen selten auf einem einzigen Dienst oder Container. Stattdessen stützen sie sich oft auf mehrere miteinander verbundene Dienste wie Webserver, Datenbanken und Caches. Die manuelle Verwaltung dieser Komponenten kann mühsam und fehleranfällig sein. Glücklicherweise vereinfachen Tools wie Docker Compose den Prozess der Definition, Bereitstellung und Verwaltung von Multi-Container-Anwendungen.
In diesem Artikel werden wir verschiedene Tools zur Verwaltung von Multi-Container-Umgebungen untersuchen, die Erstellung und Bereitstellung eines Projekts mit Docker Compose durchgehen und Best Practices für die effiziente Verwaltung Ihrer Dienste besprechen.
1.1 Überblick über Podman
Podman, kurz für „Pod Manager Tool“, ist eine Open-Source-Container-Engine, die als direkter Ersatz für Docker konzipiert wurde. Sie bietet eine Befehlszeilenschnittstelle zur Verwaltung von Containern.
Podman benötigt keinen Daemon zum Ausführen und ist mit systemd kompatibel, was es ermöglicht, Container über systemd-Einheiten zu steuern (und systemd innerhalb der Container auszuführen).
Es hilft Benutzern dabei, Container in Pods zu organisieren, die sich dasselbe Netzwerk und dieselben Ressourcen teilen.
1.1.1 So installieren Sie Podman
So installieren Sie Podman auf einem Linux-basierten System:
sudo apt update sudo apt install -y podman
Für macOS und Windows können Sie das Podman-Desktop-Installationsprogramm verwenden, das auf der offiziellen Website
1.2 Einführung in podman-docker
podman-docker ist eine Kompatibilitätsschicht, die es Ihnen ermöglicht, Docker-CLI-Befehle mit Podman zu verwenden. Dies ist besonders hilfreich, wenn Sie von Docker umsteigen oder mit Tools arbeiten, die Docker-Befehle erwarten.
1.2.1 Installation von podman-docker
Installieren Sie podman-docker , um die Kompatibilität mit Docker-Befehlen zu aktivieren:
sudo apt install -y podman-docker
Nach der Installation werden Befehle wie docker run, docker build, oder docker-compose von Podman interpretiert.
1.3 Überblick über docker-compose
Docker Compose ist ein Tool zum Ausführen von Docker-Anwendungen mit mehreren Containern unter Verwendung einer einfachen YAML-Konfigurationsdatei. Es ermöglicht Ihnen, alle Ihre Dienste, Netzwerke und Volumes in einer einzigen Datei zu beschreiben und gemeinsam zu verwalten. Docker Compose unterstützt mehrere isolierte Umgebungen auf einem einzigen Host sowie Variablen zwischen diesen. Das bedeutet, dass Sie mit diesem Tool Container, an denen Änderungen vorgenommen wurden, neu erstellen können, ohne die Multi-Container-Anwendung selbst zu verändern.
1.3.1 So installieren Sie Docker Compose
Sie können Docker Compose mithilfe des offiziellen Docker-CLI-Plugins installieren:
sudo apt update sudo apt install docker-compose-plugin
Oder für eine eigenständige Installation (zugunsten des Plugins veraltet):
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-
compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Überprüfen Sie die Installation:
docker compose version
Erstellen einer Multi-Container-Anwendung
Erstellen wir eine einfache Webanwendung, bestehend aus einem Webserver (Nginx), einem Backend (Flask) und einer Datenbank (PostgreSQL).
2.1 Schreiben der Datei compose.yml
Die compose.yml Datei (früher docker-compose.yml) enthält alle Dienstdefinitionen.
2.1.1 Dienste definieren
Jeder Dienst repräsentiert einen Container. Sie können das Image, den Build-Kontext, die Ports, die Volumes und die Umgebungsvariablen angeben.
2.1.2 Netzwerke konfigurieren
Mit Compose können Sie benutzerdefinierte Netzwerke erstellen, damit Container über ihre Dienstnamen miteinander kommunizieren können.
2.1.3 Beispiel für eine compose.yml-Datei
version: "3.9"
services:
web:
build: ./web
ports:
- "80:80"
depends on:
- backend
backend: build: ./backend
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb
depends_on:
- db
db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
In dieser Konfiguration:
- web ist das von Nginx bereitgestellte Frontend.
- backend ist ein Flask-API-Server.
- db ist ein PostgreSQL-Container mit persistenter Speicherung.
2.2 Bereitstellen von Multi-Container-Anwendungen
Sobald Ihre compose.yml -Datei fertig ist, stellen Sie Ihre Anwendung mit folgendem Befehl bereit:
docker compose up --build
Dieser Befehl erstellt die Images (falls erforderlich) und startet alle Dienste. Sie können die Anwendung mit folgendem Befehl stoppen:
docker compose down
Um die Dienste im Hintergrund auszuführen:
docker compose up -d
Verwalten einer Multi-Container-Anwendung
Docker Compose erleichtert auch die Verwaltung Ihrer Dienste. Es gibt Möglichkeiten für:
- Skalierung von Diensten:
docker compose up -d --scale backend=3
Dies führt drei Instanzen des Backend-Dienstes aus (nützlich für den Lastausgleich).
- Anzeigen von Protokollen:
docker compose logs -f
- Überprüfen des Dienstzustands:
docker compose ps
- Neu erstellen von Images:
docker compose build
- Einmalige Befehle ausführen:
docker compose exec backend flask db upgrade
Mit Docker Compose können Sie den Lebenszyklus Ihrer Anwendung auf vorhersehbare und wiederholbare Weise verwalten.
Mit Docker Compose wird die Verwaltung von Anwendungen mit mehreren Containern wesentlich einfacher, insbesondere in Umgebungen, die eine konsistente Einrichtung und Abwicklung erfordern. Ganz gleich, ob Sie lokal entwickeln oder die Produktion vorbereiten – mit Compose können Sie Ihre gesamte App-Architektur in einer einzigen Datei definieren und alles unter Kontrolle behalten.
Rechtliche Hinweise
Docker ist eine Marke von Docker, Inc. Podman ist ein Open-Source-Projekt, das von Red Hat und anderen gepflegt wird. Die gesamte erwähnte Software unterliegt den jeweiligen Open-Source-Lizenzen.
Achten Sie bei der Bereitstellung von Anwendungen in Produktionsumgebungen darauf, dass Sie die Lizenzanforderungen für alle von Ihnen verwendeten Images und Abhängigkeiten einhalten.