Beste Docker Apps: 9 Container im Überblick

BalHost
9 Min
93 Aufrufe
Beste Docker Apps: 9 Container im Überblick

Eine Docker App ist eine Anwendung, die als Container-Image verpackt ist und mit einer definierten Laufzeitumgebung auf einem Host startet. Dadurch laufen Webserver, Datenbanken und Hilfsdienste isoliert voneinander, teilen sich aber denselben Kernel des Servers. Dieser Überblick stellt neun Container vor, die in der Praxis häufig eingesetzt werden. Auswahlkriterien sind dabei Verbreitung, Wartungsaufwand, Ressourcenbedarf und die Frage, ob der Container eine klar abgegrenzte Aufgabe erfüllt. Der Artikel richtet sich an Administratoren, die einen virtuellen Server oder eine eigene Maschine mit Containern betreiben.

Was sind die besten Docker Apps für den Serverbetrieb?

Die besten Docker Apps sind solche, die eine einzelne, klar benannte Aufgabe erfüllen und sich über Umgebungsvariablen sowie ein Volume konfigurieren lassen. Ein Webserver, eine Datenbank oder ein Cache lässt sich so unabhängig aktualisieren, ohne andere Dienste zu berühren. Entscheidend ist außerdem, ob das Image regelmäßig gepflegt wird und ob offizielle Dokumentation existiert.

Ein häufiger Fehler ist, möglichst viele Container gleichzeitig zu starten, ohne den Ressourcenbedarf zu kennen. Prüfen Sie vor dem Einsatz, wie viel Arbeitsspeicher und CPU ein Image im Leerlauf benötigt. Auf einem Server mit begrenztem RAM kann bereits ein Datenbankcontainer mit Standardeinstellungen den verfügbaren Speicher aufbrauchen.

Nginx: Warum sollten Sie Nginx als Docker App einsetzen?

Nginx ist ein Webserver und Reverse Proxy, der eingehende HTTP-Anfragen annimmt und an dahinterliegende Dienste weiterleitet. Im Container übernimmt er typischerweise zwei Aufgaben: statische Dateien ausliefern und Anfragen an Anwendungen wie eine API weiterreichen. Wählen Sie Nginx, wenn Sie eine schlanke, gut dokumentierte Lösung mit geringem Speicherbedarf benötigen.

Ein praktisches Beispiel ist ein Setup, bei dem eine Anwendung auf Port 3000 lauscht und Nginx als Proxy auf Port 80 und 443 davorsteht. Die Konfiguration liegt dabei in einer Datei, die als Volume in den Container gemountet wird.

server {
    listen 80;
    server_name beispiel.de;

    location / {
        proxy_pass http://app:3000;
        proxy_set_header Host $host;
    }
}

Die Begriffe rund um die Einrichtung eines Webservers greifen auch dann, wenn Sie Nginx nicht im Container, sondern direkt auf dem System betreiben. Wer den Einstieg sucht, findet die Grundlagen in der Anleitung zum VPS Server mieten.

Traefik: Wann lohnt sich Traefik als Reverse Proxy für Container?

Traefik ist ein Reverse Proxy, der Container über Labels automatisch erkennt und Routen ohne manuelles Nachpflegen bereitstellt. Wählen Sie Traefik, wenn Container häufig neu gestartet oder ersetzt werden und die Routing-Regeln mit ihnen wandern sollen. Der Vorteil liegt in der dynamischen Konfiguration; der Preis ist eine zusätzliche Abstraktionsebene.

Bei wenigen, statischen Diensten ist ein klassischer Proxy mit einer Konfigurationsdatei oft einfacher nachzuvollziehen. Ein Beispiel für Traefik-Labels an einem Container:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.app.rule=Host(`beispiel.de`)"
  - "traefik.http.services.app.loadbalancer.server.port=3000"

Caddy: Wann ist Caddy die bessere Wahl als Nginx?

Caddy ist ein Webserver, der TLS-Zertifikate automatisch anfordert und erneuert. Wählen Sie Caddy, wenn Sie mehrere Domains mit HTTPS betreiben und den Aufwand für Zertifikatsverwaltung reduzieren möchten. Die Konfiguration ist kompakt und in einer einzelnen Datei namens Caddyfile beschreibbar.

Nginx bietet mehr Kontrolle über Detailverhalten und ist in vielen Umgebungen bereits bekannt. Wenn Ihr Team Nginx-Konfigurationen beherrscht und komplexe Regeln benötigt, bleibt Nginx die naheliegende Wahl. Für einfache Webprojekte mit automatischem HTTPS ist Caddy dagegen schneller einsatzbereit.

beispiel.de {
    reverse_proxy app:3000
}

PostgreSQL und MariaDB: Welche Datenbank gehört in einen Container?

PostgreSQL ist ein objektrelationales Datenbanksystem, das Container-Images für den Betrieb bereitstellt. Wählen Sie PostgreSQL, wenn Sie erweiterbare Datentypen, JSON-Funktionen und strenge Transaktionssicherheit benötigen. Der Container speichert seine Daten in einem Volume, das auch bei einem Image-Update erhalten bleibt.

MariaDB ist ein relationales Datenbanksystem, das aus MySQL hervorgegangen ist und ebenfalls als Container betrieben wird. Wählen Sie MariaDB, wenn bestehende MySQL-Anwendungen kompatibel bleiben sollen oder Ihr Team bereits Erfahrung mit dieser Syntax hat. In beiden Fällen gilt: Das Datenverzeichnis muss auf einem persistenten Volume liegen, sonst sind die Daten beim nächsten Containerstart verloren.

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: beispiel
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

Redis: Wofür wird Redis als Docker App verwendet?

Redis ist ein In-Memory-Datenspeicher, der Daten im Arbeitsspeicher hält und für Caches, Sitzungen und Warteschlangen genutzt wird. Wählen Sie Redis, wenn eine Anwendung häufig dieselben Daten abfragt und die Datenbank dadurch entlastet werden soll. Der Container ist klein, benötigt aber ausreichend RAM, da alle Daten im Speicher liegen.

Ein realistischer Einsatz ist ein Webprojekt, das Sitzungsdaten in Redis ablegt und dadurch mehrere Anwendungsinstanzen ohne gemeinsame Datenbank synchron hält. Beachten Sie, dass Redis ohne Passwort und ohne Netzwerkbeschränkung nicht öffentlich erreichbar sein sollte.

Portainer: Wie hilft Portainer bei der Container-Verwaltung?

Portainer ist eine Weboberfläche zur Verwaltung von Docker-Umgebungen, mit der Sie Container starten, stoppen, Logs einsehen und Volumes prüfen können. Wählen Sie Portainer, wenn Sie den Überblick über mehrere Container behalten wollen, ohne für jede Prüfung die Kommandozeile zu öffnen. Für automatisierte Abläufe bleibt die Kommandozeile dennoch das präzisere Werkzeug.

Ein typisches Szenario ist ein Server mit zehn Containern, auf dem Sie nach einem Update schnell erkennen möchten, welcher Dienst nicht mehr läuft. Portainer zeigt den Status in einer Liste; die Ursache steht im Log des betroffenen Containers.

Watchtower: Sollten Container automatisch aktualisiert werden?

Watchtower ist ein Dienst, der laufende Container prüft und bei einer neuen Image-Version neu startet. Wählen Sie Watchtower, wenn Sie viele Container mit kurzen Release-Zyklen betreiben und Updates nicht manuell einspielen möchten. Der Vorteil ist geringer Wartungsaufwand, das Risiko sind unerwartete Neustarts.

Für Datenbanken und Dienste mit Schemaänderungen ist ein automatisches Update meist nicht empfehlenswert. Setzen Sie Watchtower daher bevorzugt für zustandslose Dienste ein und prüfen Sie vorher, ob ein Neustart unterbrechungsfrei möglich ist.

services:
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600

Uptime Kuma: Wie überwachen Sie Container mit Uptime Kuma?

Uptime Kuma ist ein Monitoring-Werkzeug, das HTTP-Endpunkte, TCP-Ports und weitere Ziele in festen Intervallen prüft. Wählen Sie Uptime Kuma, wenn Sie Ausfälle einzelner Dienste früh erkennen und eine einfache Statusübersicht behalten möchten. Es ersetzt kein vollständiges Monitoring, deckt aber die häufigsten Prüfungen ab.

Ein praktischer Einstieg ist die Überwachung der öffentlichen URL Ihrer Anwendung und des Datenbankports im internen Netz. So trennen Sie sichtbare Ausfälle von internen Problemen.

Docker Compose: Warum gehört Compose zu den wichtigsten Docker Apps?

Docker Compose ist ein Werkzeug, das mehrere Container über eine YAML-Datei definiert und gemeinsam startet. Wählen Sie Compose, wenn eine Anwendung aus mehreren Diensten besteht und Sie die Konfiguration versionieren möchten. Ohne Compose müssten Sie jeden Container einzeln mit langen Befehlszeilen starten.

Compose eignet sich für einzelne Server und überschaubare Umgebungen. Wenn Sie viele Knoten, automatische Skalierung und Selbstheilung benötigen, ist ein Orchestrierungssystem wie Kubernetes die passende, aber deutlich komplexere Alternative. Für die meisten Projekte auf einem einzelnen Server ist Compose der pragmatischere Einstieg.

docker compose up -d
docker compose logs -f app

Welche Docker App passt zu welchem Einsatzzweck?

Die folgende Übersicht ordnet die vorgestellten Docker Apps nach ihrer Hauptaufgabe ein. Nutzen Sie die Tabelle als Entscheidungshilfe, nicht als feste Regel: In vielen Projekten werden mehrere Container kombiniert.

Docker App Hauptaufgabe Typischer Einsatz
Nginx Webserver, Reverse Proxy Statische Dateien, Weiterleitung an APIs
Traefik Reverse Proxy Häufig wechselnde Container
Caddy Webserver mit TLS Einfache Projekte mit HTTPS
PostgreSQL Relationale Datenbank Anwendungen mit komplexen Abfragen
MariaDB Relationale Datenbank MySQL-kompatible Anwendungen
Redis In-Memory-Cache Sitzungen, Warteschlangen
Portainer Verwaltungsoberfläche Überblick über viele Container
Watchtower Automatische Updates Zustandslose Dienste
Uptime Kuma Monitoring Verfügbarkeitsprüfung

Wenn Sie hohe Single-Core-Leistung für Anwendungen benötigen, kann eine Maschine mit AMD Ryzen 9 9950X sinnvoll sein; die passenden Optionen finden Sie beim Ryzen Server.

Häufig gestellte Fragen

Was ist der Unterschied zwischen nginx und Apache im Container?

Nginx arbeitet ereignisbasiert und verarbeitet viele gleichzeitige Verbindungen mit vergleichsweise wenig Arbeitsspeicher. Apache bietet mit Modulen wie mod_php eine tiefe Integration in PHP-Umgebungen und lädt Module pro Verbindung. Im Container ist Nginx häufig die schlankere Wahl für statische Inhalte und als Proxy, während Apache in bestehenden PHP-Setups weiterhin sinnvoll sein kann.

Wie richte ich Nginx in Docker ein?

Legen Sie eine Konfigurationsdatei an, mounten Sie sie als Volume in den Container und starten Sie den Dienst über Compose. Ein minimales Beispiel lautet: Dienst mit dem Image nginx:alpine definieren, Port 80 und 443 veröffentlichen und die Konfigurationsdatei unter /etc/nginx/conf.d/default.conf einbinden. Anschließend prüfen Sie die Konfiguration und starten den Container neu.

Wann sollte ich Docker statt Kubernetes verwenden?

Docker mit Compose eignet sich für einzelne Server und überschaubare Anwendungen, weil die Einrichtung wenig Zeit kostet und die Konfiguration gut lesbar bleibt. Kubernetes lohnt sich, wenn mehrere Knoten, automatische Skalierung und Selbstheilung benötigt werden. Für die meisten kleinen und mittleren Projekte ist der Betriebsaufwand von Kubernetes höher als der Nutzen.

Welche Datenbank eignet sich für Docker auf einem kleinen Server?

Für kleine Server ist eine einzelne relationale Datenbank meist ausreichend; PostgreSQL und MariaDB sind beide gut dokumentiert. Entscheidend ist weniger das System als die Konfiguration: Begrenzen Sie den Arbeitsspeicher, legen Sie das Datenverzeichnis auf ein persistentes Volume und sichern Sie regelmäßig. Redis ergänzt dies als Cache, ersetzt aber keine dauerhafte Datenhaltung.

Wie starte ich Nginx nach einer Konfigurationsänderung neu?

Prüfen Sie zuerst die Syntax mit dem Testbefehl des Containers, damit ein Fehler nicht zu einem Ausfall führt. Danach laden Sie die Konfiguration neu oder starten den Container über Compose neu. Der Test vor dem Neustart ist die wichtigste Gewohnheit, weil eine fehlerhafte Datei den Dienst sonst vollständig stoppen kann.

docker exec nginx nginx -t
docker exec nginx nginx -s reload

Fazit

Die beste Docker App gibt es nicht pauschal, weil jede der vorgestellten Anwendungen eine andere Aufgabe löst. Nginx, Caddy und Traefik decken den Webzugriff ab, PostgreSQL und MariaDB die Datenhaltung, Redis den Cache, während Portainer, Watchtower und Uptime Kuma den Betrieb erleichtern. Kombinieren Sie nur so viele Container, wie Sie tatsächlich betreiben können.

Als nächsten Schritt sollten Sie eine kleine Auswahl auf einem Testsystem starten und die Konfiguration versionieren, bevor Sie produktiv gehen. Wenn Sie dafür eine Umgebung mit voller Kontrolle benötigen, sehen Sie sich die Optionen für einen virtuellen Server an und prüfen Sie die aktuelle Verfügbarkeit auf der Serverseite.

Suchen Sie einen Dienst zu diesem Thema?

Die in diesem Artikel beschriebene Infrastruktur finden Sie auf BalHost-Servern.