Überblick
Ein Linux®-Container besteht aus einem oder mehreren Prozessen, die vom Rest des Systems isoliert sind. Alle zur Ausführung notwendigen Dateien werden über ein eigenes Image bereitgestellt, d. h. Linux-Container sind von der Entwicklung über die Testphase bis hin zur Produktion stets portierbar und konsistent. Sie sind deshalb viel schneller als Entwicklungs-Pipelines, bei denen herkömmliche Testumgebungen repliziert werden. Wegen ihrer Beliebtheit und Benutzerfreundlichkeit sind Container ebenfalls ein wichtiger Bestandteil der IT-Sicherheit.
Welche Vorteile bieten Linux-Container?
Stellen Sie sich vor, Sie entwickeln eine Anwendung. Sie erledigen Ihre Arbeit auf einem Laptop, und Ihre Umgebung hat eine spezifische Konfiguration. Andere Teammitglieder haben eventuell Konfigurationen, die sich leicht davon unterscheiden. Die entwickelte Anwendung stützt sich auf diese Konfiguration und ist von bestimmten Libraries, Abhängigkeiten und Dateien abhängig. Ihr Unternehmen verfügt indessen über Entwicklungs- und Produktivumgebungen, die mit eigenen Konfigurationen und eigenen Datei-Sets standardisiert sind. Sie möchten diese Umgebungen so gut wie möglich lokal emulieren, ohne jedoch die Serverumgebungen neu erstellen zu müssen. Wie schaffen Sie es also, dass Sie Ihre Anwendung ohne Sorgen, ohne Umschreiben und ohne Fehlerbeseitigungen in verschiedenen Umgebungen zum Laufen bringen, die Qualitätsprüfung bestehen und Ihre App zum Einsatz bringen? Die Antwort lautet: Container-Technologie.
Der Container, der Ihre Anwendung enthält, verfügt über die notwendigen Libraries, Abhängigkeiten und Dateien, sodass Sie ihn ohne Probleme von der Entwicklung über die Test- in die Produktionsphase verschieben können. Man kann sich den Inhalt eines Container Images – entwickelt mit einem Open Source Tool wie Buildah – als Installation einer Linux-Distribution vorstellen, weil er alle erforderlichen RPM-Pakete, Konfigurationsdateien usw. enthält. Die Distribution eines Container Images ist allerdings viel einfacher durchzuführen als die Installation neuer Kopien von Betriebssystemen.
Das ist nur ein gängiges Beispiel, aber Linux-Container können auch bei vielen anderen Problemen angewendet werden, bei denen Portierbarkeit, Konfigurierbarkeit und Isolation erforderlich sind. Mit Linux-Containern können Anwendungen schneller entwickelt und geschäftliche Anforderungen stets zeitnah umgesetzt werden. In manchen Fällen, wie dem Data Streaming in Echtzeit mit Apache Kafka, sind Container unerlässlich, da nur mit ihnen die notwendige Skalierbarkeit für Anwendungen bereitgestellt werden kann. Unabhängig von der Infrastruktur – lokal, in der Cloud oder in einer Hybrid-Umgebung – Container können die Anforderungen erfüllen. Natürlich ist die Wahl der richtigen Container-Plattform genauso wichtig wie die Container selbst.
Red Hat® OpenShift® bietet alles, was für die Entwicklung und Bereitstellung von Hybrid Clouds, Unternehmens-Containern sowie Kubernetes notwendig ist.
Red Hat Ressourcen
Ist das nicht einfach nur Virtualisierung?
Ja und nein. Man muss beide als Teile eines Ganzen sehen. Hier ist eine einfache Methode, sich dies vorzustellen:
- Die Virtualisierung ermöglicht die gleichzeitige Ausführung mehrerer Betriebssysteme (Windows oder Linux) auf einem einzigen Hardwaresystem.
- Container teilen sich den gleichen Betriebssystem-Kernel und isolieren die Anwendungsprozesse vom Rest des Systems. Beispiel: ARM Linux-Systeme führen ARM Linux-Container aus, x86 Linux-Systeme führen x86 Linux-Container aus, und x86 Windows-Systeme führen x86 Windows-Container aus. Linux-Container können sehr gut portiert werden, müssen aber mit dem zugrunde liegenden System kompatibel sein.
Was bedeutet das? Zunächst einmal wird bei der Virtualisierung ein Hypervisor zur Emulation der Hardware eingesetzt, was die gleichzeitige Ausführung mehrerer Betriebssysteme ermöglicht. Diese Variante ist jedoch viel aufwändiger als ein Container. Wenn Sie nur über endliche Ressourcen mit endlichen Fähigkeiten verfügen, benötigen Sie schlanke Apps, die in großer Dichte eingesetzt werden können. Linux-Container werden nativ auf dem Betriebssystem ausgeführt, das von all Ihren Containern gemeinsam genutzt wird. So bleiben Ihre Apps und Services schlank und können zügig parallel ausgeführt werden.
Linux-Container sind ein weiterer Evolutionsschritt bei der Entwicklung, Bereitstellung und Verwaltung von Anwendungen. Linux-Container Images bieten Portierbarkeit und Versionskontrolle und sorgen mit dafür, dass Anwendungen, die auf dem Laptop einer Entwicklerin oder eines Entwicklers korrekt laufen, auch in der Produktion funktionieren. Ein spezieller Typ von Container Image, das sogenannte Golden Image, schafft eine konsistente, zuverlässige Basis für die Systemkonfiguration. Im Vergleich zu virtuellen Maschinen benötigt ein Linux-Container weniger Ressourcen, besitzt eine Standardoberfläche (Start, Stopp, Umgebungsvariablen usw.), gewährleistet die Anwendungsisolation und lässt sich als Bestandteil einer großen Anwendung (mehrere Container) viel einfacher verwalten. Dazu können Sie diese Multi-Container-Anwendungen über mehrere Clouds hinweg orchestrieren.
Es gibt sogar Tools, mit denen sich die Container-Orchestrierung und die Verwaltung virtueller Maschinen kombinieren lassen.
Was ist LXC?
Das Linux Containers Project (LXC) ist eine Open-Source-Container-Plattform, die verschiedene Tools, Templates, Libraries und Sprachbindungen bereitstellt. LXC bietet eine einfache Befehlszeile, mit der das Benutzererlebnis beim Starten von Containern verbessert wird.
Die LXC-Virtualisierungsumgebung auf Betriebssystemebene kann auf vielen Linux-basierten Systemen installiert werden. Möglicherweise ist sie in Ihrer Linux-Distribution über das Paket-Repository verfügbar.
Eine kurze Geschichte der Container
Die Idee, die wir heute Container-Technologie nennen, wurde im Jahr 2000 erstmals unter dem Namen FreeBSD Jails bekannt. Es handelt sich dabei um eine Technologie, die die Partitionierung eines FreeBSD-Systems in mehrere Subsysteme oder „Jails" ermöglicht. Jails wurden als sichere Umgebungen entwickelt, die die Systemadministration mit mehreren Nutzenden innerhalb oder außerhalb einer Organisation teilen konnte.
Im Jahr 2001 wurde bei Linux dank des VServer-Projekts von Jacques Gélinas erstmals eine isolierte Umgebung implementiert. Nachdem diese Basis 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.
Es wurden sehr schnell weitere Technologien kombiniert, die diesen isolierten Ansatz Realität werden ließen. 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.
Docker kommt ins Spiel
Im Jahr 2008 trat Docker mit seiner gleichnamigen Container-Technologie auf die Bildfläche. Die Docker-Technologie brachte diverse neue Konzepte und Tools mit sich, wie eine einfache Befehlszeile zur Entwicklung und Ausführung neuer vielschichtiger Images, ein Server-Daemon, eine Library mit vordefinierten Container Images sowie das Konzept des Registry-Servers. Diese Technologien wurden kombiniert, und neue vielschichtige Container konnten rasch entwickelt und mit anderen Nutzenden geteilt werden.
Mit drei wichtigen Standards, den Image-, Distribution- und Runtime-Spezifikationen der OCI, wird die Interoperabilität von Container-Technologien gewährleistet. Durch die Kombination dieser Spezifikationen können Anbieter von Community-Projekten, gewerblichen Produkten und Cloud-Technologien interoperable Container-Technologien entwickeln. (Denn Sie müssen ja Ihre benutzerdefinierten Images in den Registry-Server des Cloud-Anbieters integrieren, und dieser muss funktionieren.) Heute sind Red Hat und Docker − neben vielen anderen − Mitglieder der Open Container Initiative (OCI) und sorgen für eine offene, branchenweite Standardisierung von Container-Technologien.
Wie steht es um die Container-Sicherheit?
Container sind sehr beliebt, aber sind sie auch sicher? Im Bereich der Container-Sicherheit gibt es viele unterschiedliche Variablen. So müssen die Container-Pipeline, Container-Anwendung, Entwicklungsumgebung und -infrastruktur geschützt und außerdem die Tools und Richtlinien zur Unternehmenssicherheit berücksichtigt werden. Dazu benötigen Sie einen Plan. Wir können Ihnen dabei helfen.
Warum Red Hat für Linux-Container?
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. Genau das tun wir. Und dann bieten wir Support für diese Technologien an. Wenn Sie also Hilfe brauchen, stehen wir Ihnen mit Rat und Tat zur Seite.
Die Technologien von Red Hat erleichtern den Einsatz von Containern auf einfache Art und Weise. Unabhängig davon, ob Sie Ihren Entwicklungsteams eine Plattform bereitstellen möchten, die speziell für Container entwickelt wurde, ob Sie Ihre Container-Infrastruktur auf einem der führenden Betriebssysteme ausführen wollen oder ob Sie Storage-Lösungen für die riesigen Datenmengen benötigen, die von Containern generiert werden – die Lösungen von Red Hat erfüllen Ihre Anforderungen.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.