Was ist ein Container?

Standardisierte, portierbare Paketierung für Ihre Anwendungen

Wie funktionieren Container?

So wie Frachtunternehmen physische Container verwenden, um verschiedene Ladungen – beispielsweise für den Transport in Schiffen oder Zügen – zu trennen, kommen bei Technologien der Softwareentwicklung zunehmend das Konzept der „Containerisierung“ zum Einsatz.

Ein Standardsoftwarepaket – der sogenannte Container – bündelt den Code einer Anwendung zusammen mit den zugehörigen Konfigurationsdateien, Bibliotheken und den für die Ausführung der Anwendung erforderlichen Abhängigkeiten. So können Entwickler und IT-Experten Anwendungen nahtlos umgebungsübergreifend bereitstellen.

Erste Schritte mit Docker

Warum Container wichtig sind

Das Problem, dass eine Anwendung nicht mehr richtig ausgeführt wird, wenn sie in eine andere Umgebung verschoben wird, ist so alt wie die Softwareentwicklung selbst. Solche Probleme entstehen in der Regel durch Unterschiede bei den Anforderungen der Bibliotheken, die der Konfiguration zugrunde liegen, und bei anderen Abhängigkeiten.

Container lösen dieses Problem, indem sie eine schlanke, unveränderliche Infrastruktur für die Paketierung und Bereitstellung von Anwendungen bieten. Eine Anwendung oder ein Dienst, die zugehörigen Abhängigkeiten und die entsprechende Konfiguration werden gemeinsam in einem Containerimage paketiert. Die Containeranwendung kann als Einheit getestet und als Containerimageinstanz auf dem Hostbetriebssystem bereitgestellt werden.

Auf diese Weise ermöglichen Container es Entwicklern und IT-Experten, Anwendungen mit nur wenigen oder ganz ohne Änderungen in verschiedenen Umgebungen bereitzustellen.

Erfahren Sie mehr über die Entstehung und die Vorteile von Containern.

Video ansehen

Container und virtuelle Computer im Vergleich

Wenn Sie an den Begriff „Virtualisierung“ denken, fallen Ihnen sicher virtuelle Computer bzw. Virtual Machines (VMs) ein. Tatsächlich kann die Virtualisierung aber viele Formen annehmen – und Container sind eine davon. Was ist also der Unterschied zwischen VMs und Containern?

Ganz allgemein gesagt: VMs virtualisieren die zugrunde liegende Hardware, sodass mehrere Betriebssysteminstanzen auf der Hardware ausgeführt werden können. Jede VM führt ein Betriebssystem aus und kann auf virtualisierte Ressourcen zugreifen, die die zugrunde liegende Hardware repräsentieren.

VMs bieten viele Vorteile. Sie bieten beispielsweise die Möglichkeit, verschiedene Betriebssysteme auf demselben Server auszuführen, physische Ressourcen effizienter und kostengünstiger zu nutzen und Server schneller bereitzustellen. Die andere Seite der Medaille ist aber, dass jede VM ein Betriebssystemimage, Bibliotheken, Anwendungen und vieles mehr enthalten und daher ziemlich groß werden kann.

Ein Container virtualisiert das zugrunde liegende Betriebssystem und lässt die Container-App annehmen, dass sie allein über das Betriebssystem sowie CPU, Arbeitsspeicher, Dateispeicher und Netzwerkverbindungen verfügen kann. Da die Unterschiede im zugrunde liegenden Betriebssystem und der zugrunde liegenden Infrastruktur abstrahiert werden, kann der Container überall bereitgestellt und ausgeführt werden – vorausgesetzt, das Basisimage ist konsistent. Für Entwickler ist das ausgesprochen attraktiv.

Container nutzen dasselbe Hostbetriebssystem und müssen daher kein Betriebssystem starten oder Bibliotheken laden. Dadurch sind Container sehr viel effizienter und schlanker. Containeranwendungen können innerhalb weniger Sekunden gestartet werden, und auf einem Computer können wesentlich mehr Instanzen der Anwendung ausgeführt werden als in einem VM-Szenario. Die gemeinsame Nutzung des Betriebssystems bietet darüber hinaus den Vorteil, dass Wartungsmaßnahmen wie das Aufspielen von Patches und Updates weniger Aufwand erfordern.

Container sind zwar portierbar, aber auf das Betriebssystem beschränkt, für das sie definiert wurden. Beispielsweise kann ein Container für Linux nicht unter Windows ausgeführt werden und umgekehrt.

Was spricht für Container?

Flexibilität

Wenn Entwickler ihre Anwendungen in Container paketieren und der IT zur Ausführung auf einer standardisierten Plattform zur Verfügung stellen können, lässt sich der Aufwand für die Bereitstellung von Anwendungen insgesamt reduzieren, und der gesamte Entwicklungs- und Testzyklus wird optimiert. Diese Vorgehensweise verbessert auch die Zusammenarbeit und Effizienz zwischen den Entwicklungs- und Betriebsteams, sodass Apps schneller geliefert werden können.

Portabilität

Container bieten ein standardisiertes Format zum Paketieren aller Komponenten, die zum Ausführen der gewünschten Anwendung erforderlich sind. Damit wird das typische Problem „Auf meinem Computer läuft die Anwendung“ gelöst und Portierbarkeit zwischen Betriebssystemplattformen und Clouds ermöglicht. Unabhängig davon, wo ein Container bereitgestellt wird, erfolgt die Ausführung immer in einer konsistenten Umgebung, die zwischen verschiedenen Bereitstellungen unverändert bleibt. Jetzt verfügen Sie über ein konsistentes Format – von der Sandbox des Entwicklers bis hin zur Produktion.

Schnelle Skalierbarkeit

Da bei Containern der für VMs typische Aufwand z. B. für die Verwaltung separater Betriebssysteminstanzen entfällt, können in derselben Infrastruktur wesentlich mehr Container unterstützt werden. Aufgrund ihrer schlanken Struktur können Container schnell gestartet und angehalten werden – so lassen sich Szenarien realisieren, in denen Ressourcen im Handumdrehen hoch- und herunterskaliert werden können.

Anwendungsfälle

Cloudnative Anwendungen

Cloudnative Anwendungen nutzen Container für ein einheitliches Betriebsmodell über öffentliche, private und hybride Umgebungen hinweg. Durch den geringen Verwaltungsaufwand und die hohe Dichte können viele Container auf demselben virtuellen Computer gehostet werden, daher eignen Container sich ideal für cloudnative Anwendungen.

Lift & Shift

Eine Organisation kann durch eine Migration zur Cloud erhebliche Vorteile erzielen, möchte aber vorhandene Anwendungen nicht neu programmieren. Mit Containern können Sie Ihre Anwendungen zur Cloud migrieren, ohne den zugrunde liegenden Code ändern zu müssen.

Batch

Der Begriff „Batchverarbeitung“ bezieht sich auf Aktivitäten, die ohne Eingreifen durch einen Menschen oder basierend auf verfügbaren Ressourcen ausgeführt werden können. Hierzu zählt beispielsweise das Generieren von Berichten, Größenänderungen bei Bildern und das Konvertieren von Dateien von einem Format in ein anderes. Container bieten eine einfache Möglichkeit zum Ausführen von Batchaufträgen, ohne eine Umgebung und Abhängigkeiten verwalten zu müssen. Dynamische Computeoptionen wie beispielsweise Azure Container Instances (ACI) können verwendet werden, um Daten effizient zu erfassen, zu verarbeiten und in einem robusten Speicher wie etwa Azure Blob Storage zu speichern. Anstatt statisch bereitgestellte virtuelle Computer zu verwenden, lassen sich mit einem solchen Ansatz dank sekundengenauer Abrechnung erhebliche Kosteneinsparungen erzielen.

Machine Learning

Beim maschinellen Lernen werden Algorithmen auf Daten angewendet und Vorhersagen basierend auf den in den Daten gefundenen Mustern getroffen. Mit Containern werden Anwendungen für maschinelles Lernen eigenständig und lassen sich in jeder Umgebung problemlos skalieren.

Container und mehr

Um die Vorteile von Containern optimal zu nutzen, ziehen Sie Komplettlösungen in Betracht, die containeroptimierte Tools und Dienste umfassen und Sie beim Erzielen von Agilität, Sicherheit und Skalierbarkeit unterstützen.

Orchestrierung

Die Ausführung von Containern im großen Stil erfordert die Orchestrierung und Verwaltung von verteilten Containeranwendungen über ein Orchestrierungsplattform wie beispielsweise Kubernetes.

Kubernetes mit Azure erkunden

Sicherheit

Die Nutzung von Containern erfordert einen mehrstufigen Ansatz, vom Containerimage bis hin zur Clusterisolation. Die Konfiguration dieser Schutzmaßnahmen lässt sich am besten über Ihre CI/CD-Pipelines einrichten.

Grundlegende Sicherheitsfunktionen für Container und Kubernetes

Serverlose Container

Mit bedarfsgesteuerten Containern können Sie für noch mehr Agilität sorgen. Nutzen Sie Technologien für serverlose Container zur einfachen Ausführung von Containern, ohne sich um die Serververwaltung und Burstübertragungen bei hoher Datenverkehrsauslastung in Ihren Kubernetes-Clustern kümmern zu müssen.

Serverlose Container ausprobieren

DevOps

Mit Containern können Entwickler Software und Abhängigkeiten ganz einfach über IT- und Produktionsumgebungen hinweg nutzen. In Kombination mit DevOps-Methoden können Sie Code schneller liefern und Softwareentwicklungszyklen verkürzen.

Leitfaden zu DevOps mit Azure

Ressourcen

Sind Sie bereit? Container und Kubernetes in Azure kostenlos ausprobieren