Start/Blog/DevOps & Cloud
7 Min. LesezeitÜberarbeitet am

Docker und Container: Vorteile, Betriebsaufwand und die richtige Plattform

Wann Container eine Anwendung besser auslieferbar machen, weshalb Daten und Updates separat geplant werden müssen und wann Kubernetes seinen Aufwand rechtfertigt.

Eine Anwendung läuft im Test, scheitert aber nach der Installation auf dem Server: eine andere Laufzeitversion, eine fehlende Bibliothek oder eine unbemerkte lokale Einstellung. Container helfen dabei, solche Unterschiede zu reduzieren. Ihr größter Nutzen ist ein nachvollziehbares Softwarepaket, das denselben Weg durch Entwicklung, Prüfung und Produktion nimmt. Sie ersetzen allerdings weder eine passende Architektur noch einen verantwortlichen Betrieb.

Image, Container und virtuelle Maschine verständlich unterscheiden

Ein Image ist das versionierte Paket mit Anwendung und benötigten Laufzeitdateien. Ein Container ist eine laufende Instanz dieses Images. Konfiguration und Zugangsdaten werden kontrolliert ergänzt, persistente Daten separat gespeichert. Bei Linux-Containern wird der Kernel der Laufzeitumgebung geteilt; eine virtuelle Maschine bringt ein eigenes Gastbetriebssystem mit. In der Praxis laufen Container häufig innerhalb einer VM. Beide Schichten können sich ergänzen.

Deshalb ist „läuft überall gleich“ zu pauschal. Prozessorarchitektur, Betriebssystem, Dateiberechtigungen, externe Dienste und verfügbarer Speicher beeinflussen das Verhalten. Ebenso kann ein Container ein großes Image haben und lange zum Starten brauchen, wenn die Anwendung zunächst Daten lädt. Entscheidend ist die messbare Verbesserung des konkreten Auslieferungsprozesses, nicht ein allgemeines Versprechen geringerer Größe oder kürzerer Startzeit.

Drei Situationen, drei sinnvolle Betriebsmodelle

Ausgangspunkt für eine Entscheidung, keine feste Grenze nach Containeranzahl.
SituationMöglicher EinstiegBewusster Nachteil
Internes Portal, ein kleines TeamVM mit Docker Compose und dokumentiertem DeploymentEin einzelner Host bleibt eine gemeinsame Ausfallursache.
Öffentliche Anwendung, wenig PlattformpersonalVerwalteter ContainerdienstPlattformvorgaben, Nutzungskosten und Datenexport prüfen.
Mehrere Teams mit unabhängigen DienstenOrchestrierung, gegebenenfalls KubernetesCluster, Netzwerk, Richtlinien und Plattformupdates benötigen eigene Zuständigkeit.

Docker dokumentiert ausdrücklich den Einsatz von Compose auf einem einzelnen Produktionsserver und beschreibt dafür gesonderte Produktionskonfigurationen. Compose ist somit nicht auf Entwicklerrechner beschränkt. Es baut jedoch für sich genommen keinen hochverfügbaren Mehrserverbetrieb auf. Die Docker-Anleitung für Compose in Produktion ist ein guter Ausgangspunkt für eine bewusst überschaubare Plattform.

Kubernetes lohnt eine Prüfung, wenn unabhängige Rollouts, viele Arbeitslasten und automatisierte Platzierung einen wiederkehrenden Aufwand lösen. Ein Dienst startet nach einem Fehler aber nur dann erfolgreich neu, wenn Kapazität, Datenzugriff und abhängige Systeme verfügbar sind. Ebenso verlangt ein unterbrechungsarmer Rollout ausreichend laufende Instanzen und eine Anwendung, deren Versionen während des Wechsels zusammenarbeiten können. Die Kubernetes-Dokumentation zu Deployments beschreibt die Steuerung dieser schrittweisen Aktualisierung.

Ein Beispiel: Kundenportal mit nächtlichem Import

Angenommen, ein Portal besteht aus Webanwendung, Datenbank und einem Importprozess. Ein kleines Team liefert alle drei gemeinsam aus. Der erste sinnvolle Schritt kann sein, Webanwendung und Import als getrennte Images zu bauen und mit eindeutigen Releases zu betreiben. Die Datenbank darf dabei auf ihrer bisherigen, gut betreuten Plattform bleiben. Eine gleichzeitige Migration sämtlicher Daten ist für den Nutzen reproduzierbarer Anwendungsreleases nicht erforderlich.

Im Test werden dieselben Images gestartet wie später in Produktion, jedoch mit separaten Zugängen und Testdaten. Der Import erhält ein gemessenes Speicherlimit, damit ein großer Dateilauf das Portal nicht unkontrolliert verdrängt. Die passende Reserve erklärt RAM für Server dimensionieren. Wird die Plattform auf mehrere Hosts erweitert, müssen geteilte Dateien, Sitzungen und Importzustände vorher ausdrücklich auf diesen Betrieb vorbereitet werden.

Reproduzierbar bauen heißt auch kontrolliert aktualisieren

Multi-Stage-Builds trennen Build-Werkzeuge vom ausgelieferten Laufzeitimage. Festgelegte Abhängigkeiten und ein eindeutig identifizierbares Basisimage machen Releases nachvollziehbar. Dieselbe Festlegung friert aber auch den damaligen Stand ein: Ein vorhandenes Image erhält neue Paketversionen nicht automatisch. Regelmäßige geprüfte Neubauten gehören deshalb zum Verfahren. Diese Abwägung zwischen reproduzierbarer Auswahl und Updates erläutern die Docker-Empfehlungen für Images.

In ein Release-Protokoll gehören Image-Kennung, Quellcodestand, Konfigurationsänderungen und gegebenenfalls Datenbankmigrationen. Ein Tag wie „latest“ allein ist dafür unzureichend, weil sein Inhalt wechseln kann. Zugangsdaten gehören in die dafür vorgesehene Verwaltung der Umgebung. Sie in ein Image zu kopieren erschwert spätere Rotation und verteilt vertrauliche Informationen mit jedem Abruf des Pakets.

Daten und Rollback sind die anspruchsvolleren Teile

Ein neu gestarteter Container kann eine Webanwendung ersetzen. Er stellt keine versehentlich veränderten Kundendaten wieder her. Für persistente Volumes und Datenbanken braucht es eine getestete Backup-Strategie. Auch ein älteres Anwendungsimage ist nur dann ein brauchbarer Rückweg, wenn es das inzwischen geänderte Datenbankschema noch versteht. Änderungen sollten deshalb bei Bedarf in mehrere kompatible Schritte aufgeteilt werden, statt alten Code und neue Daten gegeneinander auszuspielen.

Vor der Plattformwahl wird außerdem festgelegt, wie lange ein Ausfall tolerierbar ist, wer einen Release begleitet und wie Ersatz bei Urlaub oder Krankheit funktioniert. Laufende Kosten umfassen Registry, Protokollierung, Überwachung, Backups und Arbeitszeit. Ein günstiger Server kann mit hohem manuellem Betreuungsbedarf teurer werden als ein verwalteter Dienst; die Gegenrechnung beschreibt Server kaufen, mieten oder Cloud nutzen.

Bei Software & Web und Cloud & Infrastruktur gehören Entwicklung und Übergabe an den Betrieb zusammen. Der folgende Praxisteil legt fest, welche Nachweise ein erstes Containerprojekt liefern sollte, bevor weitere Anwendungen auf dieselbe Plattform umziehen.

Was Sie nach diesem Artikel können
  • Container nach ihrem Nutzen für den eigenen Release-Prozess bewerten
  • Compose, verwaltete Dienste und Orchestrierung anhand des Betriebsbedarfs vergleichen
  • Ein Pilotprojekt mit Daten-, Update- und Übergabekriterien abnehmen

Den Pilot an einem bisherigen Problem messen

Vor der ersten Umstellung wird der bisherige Weg dokumentiert: Wer baut die Anwendung, welche manuellen Schritte benötigt ein Release und wie häufig entstehen Unterschiede zwischen Test und Produktion? Als Pilot eignet sich eine abgegrenzte Anwendung mit verständlichen Abhängigkeiten und überschaubaren Fehlerfolgen. Ein bereits kritisches, kaum dokumentiertes Kernsystem ist selten der beste Ort, um gleichzeitig eine neue Betriebsplattform zu erlernen.

Der Pilot erhält eine überprüfbare Zielsetzung. Beispielsweise soll eine zweite Person einen freigegebenen Stand in einer leeren Testumgebung anhand der Dokumentation ausrollen können. Gemessen werden aktive Arbeitszeit, Gesamtdauer und nötige manuelle Korrekturen. Der Nachweis muss auch mit einem weiteren Release funktionieren. Ein einmal erfolgreich gestarteter Container reicht als Ergebnis nicht aus.

Ressourcen und Störungen unter realistischen Bedingungen prüfen

Ein Lasttest sollte den tatsächlichen Nutzungsmix abbilden: mehrere gleichzeitige Anmeldungen, eine Suche und parallel der größte übliche Import. Dabei werden Antwortzeit, Speicherverbrauch, CPU-Auslastung und freier Plattenplatz beobachtet. Ein Ressourcenlimit schützt nur dann sinnvoll, wenn bekannt ist, wie sich die Anwendung an dieser Grenze verhält. Zu knapp gesetzte Limits können selbst Störungen erzeugen.

Zusätzlich prüft das Team in der Testumgebung einen Neustart, eine vorübergehend nicht erreichbare Abhängigkeit und eine fehlgeschlagene Hintergrundaufgabe. Erwartet wird ein verständlicher Zustand: Die Oberfläche meldet den Fehler, Arbeit wird nicht unbemerkt doppelt ausgeführt und Protokolle ermöglichen die Zuordnung zum betroffenen Release. Es geht um den Ablauf einer kontrollierten Störung, nicht darum, beliebig viele technische Fehlerszenarien zu sammeln.

Das zweite Release zeigt, ob die Plattform betreibbar ist

Die Abnahme enthält ein Update des Anwendungsimages und eine kleine kompatible Datenänderung. Das Team kontrolliert vor und nach dem Wechsel die vereinbarten Nutzerwege. Es dokumentiert, wann ein Rückgriff auf das vorherige Image möglich ist und ab welchem Punkt neue Daten zuerst abgeglichen werden müssten. Diese Grenze sollte während einer Störung nicht erst diskutiert werden.

Zur Übergabe gehören außerdem Zuständigkeiten für Basisimages, Hostsystem, Laufzeit, Registry und Anwendung. Das sind unterschiedliche Pflegeaufgaben, auch wenn sie derselbe Dienstleister übernimmt. Aufbewahrung alter Images, Protokollmengen und Wachstumswarnungen erhalten feste Regeln. Erst wenn Updates und Vertretung funktionieren, lässt sich aus dem Pilot ein wiederverwendbarer Standard für weitere Anwendungen ableiten.

Praxis-Checkliste
  1. 01

    Einen konkreten bisherigen Deployment-Fehler oder manuellen Aufwand als Ausgangswert festhalten.

  2. 02

    Pilot mit getrennten Testdaten, eindeutigen Images und dokumentierten Abhängigkeiten ausliefern.

  3. 03

    Last, Neustart und den Ausfall einer Abhängigkeit in einer Testumgebung beobachten.

  4. 04

    Zweites Release inklusive Rückweg und fachlicher Kontrolle durchführen.

  5. 05

    Plattformpflege, Backup, Monitoring und Vertretung einer benannten Rolle übergeben.

Häufige Fragen
Lohnt sich Containerisierung, wenn nur einmal im Quartal veröffentlicht wird?

Möglicherweise, etwa wenn die Installation bisher schwer reproduzierbar ist. Bei einer stabilen, gut dokumentierten Anwendung mit seltenen Änderungen kann der Umstellungsaufwand den Nutzen aber übersteigen. Der Pilot sollte daher einen tatsächlichen Zeit- oder Qualitätsgewinn belegen.

Woran erkenne ich, ob mein Dienstleister auch den Containerbetrieb übernimmt?

An einem konkret benannten Leistungsumfang: Host- und Imageupdates, Überwachung, Datensicherung, Störungsbearbeitung, verfügbare Betreuungszeiten und Übergabe. Die Aussage „Docker ist eingerichtet“ beschreibt lediglich eine Installation und beantwortet diese Fragen noch nicht.