Was sind Container?

Container beschreiben ein Set von Technologien, mit denen Sie Anwendungen mit ihrer gesamten Laufzeitumgebung – d. h. mit allen für den Betrieb notwendigen Dateien – paketieren und isolieren können. Damit kann die enthaltene Anwendung leicht und voll funktionsfähig in einzelne Umgebungen (Entwicklung, Test, Produktion usw.) verschoben werden.

Container tragen dazu bei, Konflikte zwischen Ihren Entwicklungs- und Betriebsteams durch die Trennung von Verantwortlichkeiten zu reduzieren. Entwickler können sich auf ihre Apps und Operations kann sich auf die Infrastruktur konzentrieren. Und weil Linux-Containern auf Open Source-Technologie basieren, erhalten Sie die neuesten Weiterentwicklungen sofort nach Verfügbarkeit. Container-Technologien wie z. B. CRI-O, Kubernetes und Docker helfen Ihrem Team dabei, die Anwendungsentwicklung und -bereitstellung zu vereinfachen, zu beschleunigen und zu orchestrieren.

Sie können Container für eine Reihe von Workloads und Anwendungsfällen einsetzen – ob groß oder klein. Mit Containern erhält Ihr Team die notwendigen grundlegende Techniken für ein modernes Vorgehen in der Softwareentwicklung, darunter z. B. DevOps und CI/CD (Continuous Integration / Continuous Deployment).

Was ist ein Container aus technischer Sicht?

Ein Linux® Container ist ein Satz an Prozessen, die vom Rest des Systems isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt. Durch Bereitstellung eines Image, das alle Abhängigkeiten einer Anwendung enthält, ist er portabel und bleibt konsistent und lässt sich so problemlos von der Entwicklung über die Prüfung und schließlich in die Produktion überführen.

Ein konkretes Beispiel: stellen Sie sich vor…

…Sie entwickeln eine Anwendung. Sie erledigen Ihre Arbeit auf einem Laptop und Ihre Umgebung hat eine spezifische Konfiguration. Andere Entwickler haben eventuell Konfigurationen, die sich leicht davon unterscheiden. Die Anwendung, die Sie entwickeln, stützt sich auf diese Konfiguration und ist von bestimmten Dateien abhängig. Ihr Unternehmen verfügt indessen über Test- und Produktionsumgebungen, die mit ihren eigenen Konfigurationen und ihrem eigenen Satz von unterstützenden Dateien standardisiert sind. Sie möchten diese Umgebungen so gut wie möglich lokal emulieren, ohne jedoch den Aufwand einer Nachgestaltung der Serverumgebungen zu haben. Wie schaffen Sie es also, dass Sie Ihre Anwendung ohne Sorgen, ohne Umschreiben und ohne Fehlerbeseitigungen, in all diesen Umgebungen zum Laufen bringen, die Qualitätsprüfung bestehen und Ihre App zum Einsatz bringen? Die Antwort: Container. Der Container, der Ihre Anwendung enthält, verfügt über die notwendigen Konfigurationen (und Dateien), so dass Sie ihn ohne all die negativen Nebeneffekte von der Entwicklung zum Test und zur Produktion verschieben können. Krise vermieden – alle sind glücklich.

Das ist ein vereinfachtes Beispiel, aber Linux-Container können in vielerlei Hinsicht bei Problemen angewendet werden, bei denen Übertragbarkeit, Konfigurierbarkeit und Unabhängigkeit benötigt werden. Unabhängig von der Infrastruktur – lokal, in der Cloud, in einem Hybrid von beiden – Container können Ihre Anforderungen erfüllen.

Ist das nicht einfach nur Virtualisierung?

Ja und Nein. Hier ist ein einfacher Weg, sich die beiden vorzustellen:

  • Die Virtualisierung ermöglicht, dass mehrere Betriebssysteme gleichzeitig auf einem einzigen System laufen.
  • Container teilen sich den gleichen Betriebssystem-Kernel und isolieren die Anwendungsprozesse vom Rest des Systems.

Was bedeutet das? Erst einmal: Mehrere Betriebssysteme auf einem Hypervisor laufen zu lassen – der Software, die Virtualisierung möglich macht – belastet das System mehr als die Verwendung von Containern. Wenn Sie nur über endliche Ressourcen mit endlichen Fähigkeiten verfügen, benötigen Sie kompakte Apps, die in großer Dichte eingesetzt werden können. Linux-Container arbeiten aus diesem einzelnen Betriebssystem heraus und nutzen es gemeinsam für alle Ihre Container. So bleiben Ihre Apps und Dienste leicht und können zügig parallel laufen.

Weiterführende Informationen

Eine kurze Geschichte der Container…

Mehr zum Thema Virtualisierung…