Willkommen zu Red Hat

Folgen Sie aktuellen Entwicklungen in ihrer Nähe

Verpassen Sie nicht die neuesten Beiträge zu Red Hat Kunden weltweit:

Container

Was ist ein Linux-Container?

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.

What is a container

Um es genauer zu beschreiben, 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.

[EMBED:2 alt=“Virtualisierung vs Container", title="Virtualisierung vs Container"]

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.


Eine kurze Geschichte der Container

[EMBED:3 alt=“Entwicklung der Container Download-Button", title="Entwicklung der Container Download-Button"]

Die Idee, die wir jetzt Containertechnologie nennen, tauchte zuerst im Jahr 2000 als FreeBSD jail auf, einer Technologie, die die Partitionierung eines FreeBSD-Systems in mehrere Untersysteme, oder Jails, erlaubt. Jails wurden als sichere Umgebungen entwickelt, die ein Systemadministrator mit mehreren Nutzern innerhalb oder außerhalb einer Organisation gemeinsam nutzen konnte. Ein Jail diente dazu, Prozesse in einer modifizierten gechrooteten Umgebung zu erstellen – in der der Zugang zum Dateisystem, Netzwerken und Benutzern virtualisiert ist – und so zu verhindern, dass diese das gesamte System umgehen oder beeinträchtigen konnten. Jails waren in ihrer Implementierung eingeschränkt und irgendwann wurden Methoden zum Entkommen aus der Jail-Umgebung entdeckt.

Doch das Konzept war überzeugend.

Im Jahr 2001 wurde Linux dank des VServer-Projekts von Jacques Gélinas um die Implementierung einer isolierten Umgebung bereichert. Wie Gélinas es formulierte, war dies ein Versuch, „mehrere Mehrzweck-Linux-Server [sic] in einer einzigen Box mit einem hohen Grad an Unabhängigkeit und Sicherheit“ laufen zu lassen. Nachdem diese Grundlage für mehrere kontrollierte Userspaces in Linux eingerichtet war, fügten sich die Teile zusammen und bildeten das, was heute als Linux-Container bekannt ist.

Container werden praktisch

Es wurden sehr schnell weitere Technologien kombiniert, um diesen isolierten Ansatz Realität werden zu lassen. Control Groups (cgroups) ist eine Kernel-Funktion, die die Ressourcenverwendung für einen Prozess oder Gruppen von Prozessen steuert und beschränkt. Und systemd, ein Initialisierungssystem, das den Userspace einrichtet und deren Prozesse verwaltet, wird von cgroups verwendet, um eine bessere Kontrolle über diese isolierten Prozesse zu erhalten. Diese beiden Technologien bildeten den Rahmen für die erfolgreiche dauerhafte Trennung von Umgebungen und boten gleichzeitig eine erhöhte Kontrollfähigkeit für Linux.

Fortschritte im Bereich der User Namespaces bildeten den nächsten Schritt für Container. User Namespaces „ermöglichen Pro-Namespace-Zuordnung von Nutzer- und Gruppen-IDs. Im Kontext von Containern bedeutet dies, dass Benutzer und Gruppen über Rechte für bestimmte Operationen innerhalb des Containers verfügen, ohne, dass sie diese Rechte auch außerhalb des Containers haben.“ Dies ähnelt dem Konzept der Jails, jedoch mit der zusätzlichen Sicherheit einer weiteren Isolierung der Prozesse im Vergleich zu dem Jail-Konzept der modifizierten Umgebung.

Das Linux Containers Project (LXC) hat diesen Fortschritten dann einige dringend benötigte Tools, Templates, Bibliotheken und Sprachbindungen hinzugefügt und so das Benutzererlebnis bei der Verwendung von Containern verbessert.

Docker kommt ins Spiel

Im Jahr 2008 trat Docker (über dotCloud) mit seiner gleichnamigen Container-Technologie auf die Bildfläche. Die Docker-Technologie kombiniert die Arbeit von LXC mit weiter verbesserten Tools für Entwickler und erhöht so die Benutzerfreundlichkeit von Containern. Docker, eine Open Source-Technologie, ist aktuell das am besten bekannte Projekt und die am besten bekannte Methode für die Bereitstellung und die Verwaltung von Linux-Containern.

Heute sind Red Hat und Docker, mit vielen anderen, Mitglieder der Open Container Initiative (OCI) und arbeiten auf eine offene, branchenweite Standardisierung von Containertechnologien hin.


Standardisierung und die Open Container Initiative

Die Open Container Initiative (OCI), Teil der Linux Foundation, wurde im Jahr 2015 „für den ausdrücklichen Zweck der Schaffung von offenen, branchenweiten Standards im Bereich von Containerformaten und Runtime“ ins Leben gerufen. Dieses Projekt konzentriert sich auf die Bestimmung und Festlegung von Spezifikationen – aktuell zwei Spezifikationen: Runtime und Image.

Die Runtime-Spezifikation bestimmt offene Standards rund um ein Dateisystem-Bundle, die Struktur der unterstützenden Dateien und Artefakte in einem Container, sowie die Art, wie das Bundle von einer konformen Laufzeitumgebung entpackt wird. Im Grunde existiert die Spezifikation, um sicherzustellen, dass Container wie geplant funktionieren und alle unterstützenden Einheiten verfügbar sind und sich am richtigen Ort befinden.

Die Image-Spezifikation von OCI bestimmt, wie Container-Images erstellt werden. Das Ergebnis dieser Erstellung ist „ein Image-Manifest, eine Dateisystem-Serialisierung und eine Image-Konfiguration.

Diese Spezifikationen definieren gemeinsam den Inhalt und die Abhängigkeiten, Umgebungen, Argumente usw. eines Container-Image, die für die korrekte Ausführung des Image erforderlich sind.


Container sind eine Abstraktion

Linux-Container sind ein weiterer Evolutionsschritt bei der Entwicklung, Bereitstellung und Verwaltung von Anwendungen. Linux-Container-Images bieten Portabilität und Versionskontrolle und helfen dabei, sicherzustellen, dass Anwendungen, die auf dem Laptop eines Entwicklers korrekt laufen, auch in der Produktion funktionieren.

Ein laufender Linux-Container ist weniger ressourcenintensiv als eine virtuelle Maschine, verfügt jedoch fast über die gleiche Anwendungsisolierung und lässt sich leichter als Teil einer größeren Anwendung verwalten.

Bei Linux-Containern liegt der Fokus nicht auf der verwendeten Software, sondern auf den Aufgaben, die erledigt werden. Außerdem können Container nicht nur eine einzige Anwendung enthalten: Sie können Container auch für Teile einer Anwendung oder Services verwenden. Danach steht Ihnen der Einsatz weiterer Technologien, wie Kubernetes, zur Automatisierung und Orchestrierung Ihrer containerisierten Apps offen. Ein Container kann Anwendungslogik, eine Runtime und Abhängigkeiten beherbergen und daher alles beinhalten oder Sie können eine Anwendung erstellen, die viele Container beinhaltet, die als Microservices arbeiten.


Container in Produktionsumgebungen

Container eignen sich hervorragend für eine beschleunigte Bereitstellung von Software und Anwendungen an Ihre Kunden. Will heißen, ihre Verwendung in Produktionsumgebungen. Das bedeutet auch ein höheres Risiko für die Prozesse, die auf diesen Containern ausgeführt werden.

Red Hat kommt Ihnen jedoch in dieser Hinsicht zu Hilfe. Red Hat ist in der Open Source-Community schon seit vielen Jahren dafür bekannt, Technologien wie Container sicher, stabil und zuverlässig zu machen. Dafür setzen wir uns ein. Wir bieten Unterstützung für diese Technologien. Wenn Sie also Hilfe brauchen, stehen wir Ihnen mit Rat und Tat zur Seite.

Mit den Technologien von Red Hat hat das Rätselraten rund um die Handhabung von Containern endlich ein Ende. Ob Sie nun Ihre Entwicklerteams auf eine aus Containern bestehende Plattform umstellen, Ihre Container-Infrastruktur auf einem erstklassigen Betriebssystem ausführen oder Storage-Lösungen für die riesigen von Containern generierten Datenmengen bereitstellen möchten – bei Red Hat finden Sie genau die Lösungen, die Sie benötigen.

Container bieten eine Vielzahl weiterer Einsatzmöglichkeiten