Ulrich Müller - stock.adobe.com

Sechs Anwendungsfälle, für die sich Docker eignet

Docker ist eine der populärsten Softwareplattformen der letzten Jahre. Container und ihre Verwaltung liegen im Trend – doch nicht für jeden ist das wirklich die beste Wahl.

Docker und Container gehören zu den am meisten gehypten Technologien der letzten Jahre. Doch wie ei jedem Trend-Thema geht dabei gerne das Thema der Praktikabilität unter: Docker ist super, keine Frage – aber nun mal nicht immer und für jeden.

Welche Anwendungsfälle unterstützt Docker? Wann sollten Sie Docker und Container statt Virtueller Maschinen (VM) oder anderer Techniken zur Anwendungsbereitstellung verwenden und wann nicht? In diesem Artikel stellen wir sechs gute Anwendungsfälle für Docker vor und erklären auch, wann sich das Tool nicht so gut eignet.

Was sind Docker-Container?

Docker-Container sind einfache Anwendungs-Hosting-Umgebungen. Wie VMs sind sie so konzipiert, dass sie leicht zwischen verschiedenen Computern verschoben werden können und Workloads voneinander isolieren.

Der wichtigste Unterschied zwischen Docker und VMs besteht darin, dass Docker-Container Betriebssystemressourcen mit dem Server teilen, der die Docker-Container hostet. VMs verwenden stattdessen ein virtualisiertes Gastbetriebssystem.

Da die gemeinsame Nutzung eines Betriebssystems weniger Ressourcen verbraucht als das Ausführen eigenständiger Gastbetriebssysteme auf einem Host-Betriebssystem, sind Docker-Container effizienter, und Administratoren können mehr Container auf einem einzelnen Hostserver ausführen als auf VMs. Docker-Container starten in der Regel auch schneller als VMs, da sie kein vollständiges Betriebssystem hochfahren müssen.

Docker im Vergleich zu anderen Container-Laufzeiten

Der Begriff Docker-Container ist nicht ganz eindeutig: Technisch gesehen ist der wichtigste Aspekt von Docker seine Runtime, also die Software, die Container ausführt. Neben der Docker-Runtime, die die Basis für containerd bildet, können moderne Container auch von Runtimes wie CRI-O und Linux Containers ausgeführt werden.

Die meisten modernen Containerlaufzeiten können diese üblichen Arten von Containern ausführen, solange sie den Standards der Open Container Initiative entsprechen. Docker war jedoch die erst weit verbreitete Container-Runtime und viele verwenden Docker daher immer noch als Synonym für Container im Allgemeinen. Wenn also von Docker-Containern gesprochen wird, bezieht sich der Begriff manchmal auf jede Art von Container, nicht unbedingt auf Container, die nur mit Docker funktionieren.

Die Nuancen und Semantik sind im Kontext dieses Artikels jedoch nicht allzu wichtig. Fast jeder Anwendungsfall, den Docker unterstützt, kann auch von anderen Mainstream-Container-Laufzeiten unterstützt werden. Wir nennen sie in diesem Artikel Docker-Anwendungsfälle, doch Sie müssen dafür nicht zwingend Docker benutzen.

Docker-Anwendungsbeispiele

Docker-Container können praktisch jede Art von Anwendung hosten. Sie eignen sich jedoch besonders gut für bestimmte Anwendungsfälle und Anwendungsformate.

Anwendungen mit einer Microservices-Architektur

Anwendungen, die mit einer Microservices-Architektur entworfen wurden, passen perfekt zu Docker-Containern. Entwickler stellen jeden Microservice in einem separaten Container bereit und integrieren dann die Container, um mit von Orchestrierungstools wie Docker Swarm oder Kubernetes und einem Service Mesh wie Istio oder VMware Tanzu eine vollständige Anwendung zu erstellen.

Technisch gesehen könnten Sie Microservices auch in VMs oder direkt auf Bare-Metal-Servern bereitstellen. Der geringe Ressourcenverbrauch und die schnellen Startzeiten von Containern unterstützen Microservices jedoch optimal.

Anwendungstests vor der Bereitstellung

Die Möglichkeit, Anwendungen in Docker-Containern zu testen und sie dann mit denselben Containern in der Produktion bereitzustellen, ist ein weiterer wichtiger Anwendungsfall von Docker.

Wenn Entwickler Anwendungen in derselben Umgebung testen, in der die Anwendungen in Produktion gehen, müssen sie sich weniger Sorgen machen, dass Konfigurationsunterschiede zwischen der Testumgebung und der Produktionsumgebung zu unerwarteten Problemen führen.

Frühe Anwendungsentwicklung

Docker ist praktisch für Entwickler, die sich in der Anfangsphase eines Projekts befinden und eine einfache Möglichkeit suchen, Testumgebungen aufzubauen. Durch das Erstellen von Docker-Container-Images für die App und deren Ausführen mit Docker oder einer anderen Laufzeit können Entwickler die App auf einem normalen PC ohne ein gesondertes Host-Betriebssystem testen. Sie können auch Konfigurationseinstellungen für Anwendungen vornehmen, die sich von denen auf dem Host-Betriebssystem unterscheiden.

Dies ist von Vorteil, da Anwendungstests ansonsten das Einrichten einer dedizierten Testumgebung erfordern würden. Diese können sie immer noch später errichten, wen die Anwendung ausgereift ist und umfangreich getestet werden soll. Wenn Sie jedoch gerade erst mit einer neuen Codebasis beginnen, ist ein Docker-Container eine bequeme Möglichkeit, Funktionen zu testen, ohne eine spezielle Entwicklungs- oder Testumgebung aufbauen zu müssen.

Multi-Cloud- oder Hybrid-Cloud-Anwendungen

Docker-Container sind portabel, was bedeutet, dass sie mit minimalen Konfigurationsänderungen problemlos von einer Server- oder Cloud-Umgebung in eine andere verschoben werden können.

Teams, die mit Multi-Cloud- oder Hybrid-Cloud-Architekturen arbeiten, können ihre Anwendung einmal in Container verpacken und dann in der Cloud- oder Hybrid-Cloud-Umgebung ihrer Wahl bereitstellen. Sie können auch Anwendungen schnell zwischen Clouds oder von lokal und zurück in die Cloud verschieben.

Bereitstellen von betriebssystemunabhängigen Anwendungen

Die gleiche Docker-Container kann normalerweise auf jeder Linux-Version laufen, ohne dass spezielle Konfigurationen für die Linux-Distribution oder -Version notwendig sind. Aus diesem Grund wurden Docker-Container von Projekten wie Subuser als Grundlage für die betriebssystemunabhängige Anwendungsbereitstellung verwendet.

Das ist wichtig, weil es bei der Installation von Anwendungen im Allgemeinen nicht viel Konsistenz zwischen Linux-Distributionen gibt. Jede Distribution oder Distributionsfamilie – zum Beispiel Ubuntu oder Debian – hat ihr eigenes Paketverwaltungssystem, und ein Anwendungspaket kann normalerweise nicht ohne besonderen Aufwand auf einer anderen Linux-Distribution wie RHEL (Red Hat Enterprise Linux) installiert werden. Docker löst dieses Problem, da auf all diesen Systemen dasselbe Docker-Image ausgeführt werden kann.

Allerdings gibt es Einschränkungen für diesen Docker-Anwendungsfall. Docker-Container, die für Linux erstellt wurden, können nicht unter Windows ausgeführt werden und umgekehrt, sodass Docker nicht vollständig betriebssystemagnostisch ist.

Kostenkontrolle

Die Effizienz von Docker-Containern im Vergleich zu VMs macht Docker zu einer praktischen Option für Teams, die ihre Infrastrukturausgaben reduzieren möchten. Durch den Umzug von Anwendungen von virtuellen Maschinen in Container, reduzieren Unternehmen sehr wahrscheinlich ihren Ressourcenbedarf.

In der Cloud bedeutet dies niedrigere IaaS-Kosten (Infrastructure as a Service) und eine niedrigere Cloud-Rechnung. On-Premises können Teams die gleichen Workloads mit weniger Servern hosten und damit die Kosten senken.

Wann Sie Docker nicht verwenden sollten

Docker ist für viele Anwendungsfälle praktisch, aber deshalb dennoch nicht die beste Wahl für jedes Anwendungsbereitstellungsszenario.

Häufige Gründe, Docker nicht zu verwenden, sind die folgenden:

  • Sicherheitsbedenken. Anwendungen, die eine strikte Isolation erfordern, werden besser in VMs bereitgestellt als in Containern, die Anwendungen nicht vollständig voneinander oder vom Hostbetriebssystem isolieren.
  • Grafikintensive Anwendungen. Obwohl es technisch möglich ist, Anwendungen mit grafischer Benuteroberfläche in Docker-Containern auszuführen, ist das viel schwieriger als das Ausführen von Apps, die sich nur über die Kommandozeile bedienen lassen. Aus diesem Grund werden Videospiele beispielsweise nicht mit Docker bereitgestellt.
  • Kleine Bereitstellungen. Teams, die nur eine kleine Anzahl von Apps bereitstellen oder ihre Apps nicht häufig aktualisieren, sind möglicherweise besser dran, bei VMs zu bleiben, weil sie einfacher zu verwalten sind. Die Komplexität der Orchestrierung von Docker-Containern und der Verwaltung von Speicher für Container überwiegt die Vorteile von Docker für kleine Bereitstellungen.

Erfahren Sie mehr über Containervirtualisierung