Anmelden / Registrieren Konto

Container

Linux-Container erklärt

Ein Linux®-Container ist ein Satz 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.


Warum werden Container verwendet?

What is a container

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 entwickelte Anwendung stützt sich auf diese Konfiguration und ist von bestimmten Bibliotheken, Abhängigkeiten und Dateien abhängig. Ihr Unternehmen verfügt indessen über Entwicklungs- und Produktionsumgebungen, die mit ihren eigenen Konfigurationen und ihren 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 all diesen Umgebungen zum Laufen bringen, die Qualitätsprüfung bestehen und Ihre App zum Einsatz bringen? Die Antwort lautet: Container.

Der Container, der Ihre Anwendung enthält, verfügt über die notwendigen Bibliotheken, 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-Image als Installation einer Linux-Distribution vorstellen, weil er alle RPM-Pakete, Konfigurationsdateien usw. enthält. Die Distribution eines Container-Image ist allerdings viel einfacher durchzuführen als die Installation neuer Kopien von Betriebssystemen. Krise abgewendet – alle sind zufrieden.

Das ist 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 unternehmerische Erfordernisse stets zeitnah umgesetzt werden. In manchen Fällen, wie dem Daten-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 – On-Premise, in der Cloud oder in einer Hybrid-Umgebung – Container können die Anforderungen erfüllen. Natürlich ist die Wahl der richtigen Containerplattform genauso wichtig wie die Container selbst.


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 Hardware-System.
  • 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.

virtualization vs containers

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 kompakte 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 kompakt 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 Portabilität und Versionskontrolle und sorgen mit dafür, dass Anwendungen, die auf dem Laptop eines Entwicklers korrekt laufen, auch in der Produktion funktionieren. Im Vergleich zu virtuellen Rechnern (Virtual Machines, VMs) benötigt ein Linux-Container weniger Ressourcen, besitzt eine Standardoberfläche (Start, Stopp, Umgebungsvariablen usw.), gewährleistet die Anwendungsisolierung 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.


Was ist LXC?

Das Linux Containers Project (LXC) ist eine Open-Source-Container-Plattform, die verschiedene Tools, Templates, Bibliotheken und Sprachbindungen bereitstellt. LXC bietet eine einfache Befehlszeilenschnittstelle, mit der 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

Evolution of containers download button

Die Idee, die wir heute Container-Technologie nennen, wurde im Jahre 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 ein Systemadministrator mit mehreren Nutzern innerhalb oder außerhalb einer Organisation gemeinsam nutzen konnte.

Im Jahr 2001 wurde bei Linux dank des VServer-Projekts von Jacques Gélinas erstmals eine isolierte Umgebung implementiert. 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.

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 (über dotCloud) mit seiner gleichnamigen Container-Technologie auf die Bildfläche. Die Docker-Technologie brachte diverse neue Konzepte und Tools mit sich, wie eine einfache Befehlszeilenschnittstelle zur Entwicklung/Ausführung neuer vielschichtiger Images, ein Server-Daemon, eine Bibliothek mit vordefinierten Container-Images sowie das Konzept des Registry-Servers. Diese Technologien wurden kombiniert, und neue vielschichtige Container konnten rasch entwickelt und mit anderen Nutzern gemeinsam verwendet 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.


Und 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.


Wir können Ihnen dabei helfen.

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. Und dann bieten wir Support für diese Technologien an. 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 haben noch viel mehr zu bieten