Docker Compose mit Portainer: Stacks sauber verwalten

Docker Compose erleichtert die Verwaltung komplexer Container-Umgebungen erheblich, und Portainer bietet eine benutzerfreundliche Oberfläche, um Compose-Stacks effizient zu betreuen. In diesem Tutorial erfahren Sie, wie Sie Docker Compose zusammen mit Portainer nutzen, um Container-Stacks sauber zu erstellen, zu verwalten und zu überwachen, ohne die Kontrolle über Abhängigkeiten und Netzwerke zu verlieren.

Vorteile der Nutzung von Portainer mit Docker Compose

Die Kombination von Docker Compose und Portainer bietet mehrere Vorteile für Administratoren und Entwickler:

  • Visualisierung von Stacks und deren Abhängigkeiten.
  • Einfache Verwaltung von Start- und Stopvorgängen über die Weboberfläche.
  • Monitoring von Container-Healthchecks, Logs und Ressourcenverbrauch.
  • Vereinfachte Bereitstellung neuer Stacks über Upload von Compose-Dateien.
  • Isolierung von Netzwerken und persistenten Volumes für konsistente Umgebungen.

Vorbereitung: Docker Compose Umgebung

Bevor Portainer Stacks verwalten kann, muss Docker Compose korrekt installiert und konfiguriert sein:

  • Installieren Sie Docker Engine (Version ≥20.x) und Docker Compose (Version ≥1.29).
  • Erstellen Sie ein separates Projektverzeichnis für Ihre Stacks:
  • mkdir ~/docker-stacks
    cd ~/docker-stacks
  • Initialisieren Sie eine Compose-Datei, z. B. docker-compose.yml, für Ihre Anwendung.

Beispiel-Stack: Web App mit Datenbank

Ein typischer Compose-Stack besteht aus einer Webanwendung, einer Datenbank und optional einem Reverse Proxy:

version: "3.9"

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

db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
volumes:
- db_data:/var/lib/postgresql/data
networks:
- web-net

networks:
web-net:

volumes:
db_data:

Stacks in Portainer verwalten

Stack erstellen

Nach dem Start von Portainer können Sie Compose-Stapel direkt importieren:

  • Login in Portainer über http://:9000.
  • Gehen Sie zu StacksAdd stack.
  • Laden Sie Ihre docker-compose.yml hoch oder kopieren Sie den Inhalt.
  • Definieren Sie einen Stack-Namen und klicken Sie auf Deploy the stack.

Stack aktualisieren

Portainer ermöglicht einfache Updates der Container:

  • Bearbeiten Sie den Compose-Code innerhalb von Portainer.
  • Klicken Sie auf Update the stack, um neue Images oder Konfigurationen zu übernehmen.
  • Optional: Verwenden Sie --with-registry-auth bei privaten Images.

Logs und Healthchecks überwachen

Die Weboberfläche zeigt laufende Container, deren Logs und Health-Status:

  • Stack auswählen → Container → Logs.
  • Healthchecks werden in Echtzeit angezeigt, sofern im Compose-File definiert:
  • healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      retries: 3

Netzwerke und Volumes sauber verwalten

Portainer visualisiert Netzwerkverbindungen und Volumes, was hilft, Fehler zu vermeiden:

  • Separate Netzwerke für interne Kommunikation und öffentliche Schnittstellen definieren.
  • Persistente Volumes für Datenbanken oder Konfigurationen nutzen.
  • Container nur auf benötigte Netzwerke verbinden, um Angriffsflächen zu minimieren.

Security Best Practices

Webzugriff absichern

  • HTTPS über Reverse Proxy oder Traefik/Caddy einrichten.
  • Admin-Passwort stark wählen und MFA aktivieren, falls verfügbar.
  • Zugriffe auf Port 9000 nur für vertrauenswürdige IPs erlauben.

Volumes und Secrets

  • Um sensible Daten zu schützen, nutzen Sie Docker Secrets oder environment variables in Kombination mit compose.override.yml.
  • Regelmäßige Backups von Volumes direkt über Docker CLI oder Cronjobs.

Multi-Stack Management

Portainer erlaubt die Verwaltung mehrerer Stacks gleichzeitig:

  • Stacks nach Projekten gruppieren.
  • Ressourcenverbrauch pro Stack überwachen.
  • Updates nacheinander oder parallel durchführen, um Ausfallzeiten zu minimieren.

Fehlerbehebung

Container starten nicht

  • Logs prüfen:
    docker logs <container_name>
  • Abhängigkeiten sicherstellen: z. B. Datenbank muss vor Web-App laufen.
  • Netzwerkprobleme: docker network inspect <network>

Volumes werden nicht gemountet

  • Prüfen Sie Pfade auf Host und Container.
  • UID/GID Probleme beheben, ggf. user: "1000:1000" im Compose-File definieren.

Automatisierung

Portainer unterstützt automatische Updates von Stacks über Webhooks oder CI/CD Pipelines:

  • Webhook-URL in Portainer erzeugen.
  • In CI/CD Pipeline nach erfolgreichem Build den Stack deployen.
  • Alternativ Watchtower nutzen, um Container regelmäßig zu aktualisieren.

Fazit

Die Kombination aus Docker Compose und Portainer bietet eine saubere, visuelle und sichere Möglichkeit, Container-Stacks zu betreiben. Durch klar definierte Netzwerke, Volumes und Healthchecks wird die Wartung vereinfacht und das Risiko von Ausfällen reduziert. Multi-Stack-Umgebungen lassen sich zentral überwachen und bei Bedarf automatisiert aktualisieren, was den Betrieb sowohl für Entwickler als auch für Administratoren deutlich erleichtert.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles