Wie hängen Container und Linux, Docker und Red Hat zusammen?

Container sind Linux

| Autor / Redakteur: Joe Fernandes* / Ulrike Ostler

Ein Container, auch von Docker, ist ein Linux-Prozess.
Ein Container, auch von Docker, ist ein Linux-Prozess. (Bild: gemeinfrei: von Larry Ewing, Simon Budig, Garrett LeSage / dotCloud, Inc. : https://commons.wikimedia.org/w/index.php?curid=753970/ Apache License 2.0, https://commons.wikimedia.org/w/index.php?curid=28456942 / CC0)

Mit Containern können Unternehmen Applikationen in einer beliebigen Umgebung bereitstellen. Als zugrundeliegendes Betriebssystem bietet Linux dafür die besten Voraussetzungen.

Das Betriebssystem Linux hat die Rechenzentren in den letzten 20 Jahren revolutioniert und ist jetzt drauf und dran, auch die Paketierung, Implementierung und Verwaltung von Applikationen in der Cloud zu revolutionieren. Das Interesse an Container-Technologie wächst ständig weiter, da immer mehr Unternehmen deren Vorteile bei der Verwaltung von Applikationen und Infrastrukturen erkennen.

Allerdings können Anwender bei all dem Hype leicht den Überblick verlieren und übersehen, worum es bei Containern eigentlich geht. Letztlich sind Container seit mehr als einem Jahrzehnt eine Funktion von Linux; der Ursprung reicht sogar zurück bis zu "Unix".

Ungeachtet der vor Kurzem erfolgten Präsentation von Windows-Containern, handelt es sich bei der großen Mehrzahl von Containern um Linux-Container. Bei der Entscheidung für Container und deren Implementierung spielt die zugrundeliegende Technologie eine entscheidende Rolle.

Ein Container ist ein Linux-Prozess

Ein Linux-Container ist nichts anders, als ein Prozess, der unter Linux läuft. Er teilt sich den Kernel mit anderen containerisierten Prozessen. Wodurch aber wird ein Prozess zu einem Container?

Erstens ist jeder containerisierte Prozess unter Verwendung von Kernel Namespaces von anderen, auf dem gleichen Linux-Host laufenden Prozessen isoliert. Der Kernel präsentiert jedem Prozess nur seine jeweils „eigene Welt“. Der „PID (Process Identifier) Namespace“ etwa sorgt dafür, dass ein containerisierter Prozess nur die Prozesse innerhalb des Containers sieht, aber keine Prozesse anderer Container auf dem Shared Host.

Eine zusätzliche Sicherheitsisolierung stellen Kernel-Features wie Dropped Capabilities, Read-Only Mounts und Seccom (Secure Computing Mode) bereit. Eine Sicherheitsisolierung auf Ebene des Filesystems bietet „SELinux“, das seit Linux 2.6.x im Kernel integriert und in Distributionen wie „Red Hat Enterprise Linux“ (RHEL) enthalten ist.

Zweitens sind die jedem containerisierten Prozess zur Verfügung stehenden Ressourcen wie Memory-, CPU- oder I/O-Kapazitäten mit Hilfe von Linux Control Groups limitiert. Damit lassen sich die leidigen Nachbarschaftsstreitigkeiten beseitigen, bei denen ein Container nahezu alle Ressourcen des Linux-Hosts beansprucht und andere damit „aushungert“.

Die beiden Optionen, containerisierte Prozesse zu isolieren und die ihnen zur Verfügung stehenden Ressourcen zu limitieren, ermöglichen es, mehrere Applikations-Container sicher auf einem Shared Host zu betreiben. Die Kombination aus Isolierung und Ressourcenlimits macht aus einem Linux-Prozess einen Linux-Container.

Anders ausgedrückt: Container sind Linux. Daraus ergeben sich mehrere Implikationen.

Ein Container-Stack besteht aus verschiedenen Layern, die eine eindeutige Grenze zwischen dem Zuständigkeitsbereich von Entwicklern und dem des IT-Betriebs markieren.
Ein Container-Stack besteht aus verschiedenen Layern, die eine eindeutige Grenze zwischen dem Zuständigkeitsbereich von Entwicklern und dem des IT-Betriebs markieren. (Bild: Red Hat)

Container-Sicherheit ist Linux-Sicherheit

Die Möglichkeit, mehrere Container sicher auf einem Shared Host zu betreiben, ist nur so gut, wie die Möglichkeit eines Kernels, in einer mandantenfähigen Umgebung eine eindeutige Isolierung zwischen Containern und dem zugrundeliegenden Host-Betriebssystem sicherstellen zu können. Das schließt die Linux Kernel Namespaces und weitere Sicherheitsfunktionen wie SELinux – bereitgestellt vom Kernel – sowie die Sicherheits- und Verfügbarkeitsfunktionen der jeweils eingesetzten Linux-Distribution mit ein. Letztlich bedeutet dies, dass die Container nur so sicher sind wie der Linux-Host, auf dem sie laufen.

Ein weiterer wichtiger Faktor ist es sicherzustellen, dass nur vertrauenswürdiger Content in einem Container läuft. Das Open-Source-Docker-Projekt hat ein mehrschichtiges Paketierungsformat für nicht veränderbare Container-Images eingeführt. Dennoch müssen Anwender selbst immer noch dafür sorgen, dass Images sicher laufen.

"Red Hat OpenShift Container Platform" ermöglicht die dynamische Speicherbereitstellung sowohl für tradi¬tionelle als auch für Cloud-native und mandanten¬fähige Applikationen, die mehrere Anwendungen, Teams und Bereitstellungsprozesse unterstützen.
"Red Hat OpenShift Container Platform" ermöglicht die dynamische Speicherbereitstellung sowohl für tradi¬tionelle als auch für Cloud-native und mandanten¬fähige Applikationen, die mehrere Anwendungen, Teams und Bereitstellungsprozesse unterstützen. (Bild: Red Hat)

Jedes Container-Image besteht aus einem grundlegenden Linux User Space Layer sowie weiteren Applikations-abhängigen Layern. Red Hat beispielsweise bietet über seine zertifizierte Container Registry Basis-Images für Red Hat Enterprise Linux 6 und Red Hat Enterprise Linux 7 sowie eine große Zahl zertifizierter Images für verschiedene Programmiersprachen, Middleware und Datenbanken.

Container-Performance ist Linux-Performance

Ein Container-Image ist ein mehrschichtiges Linux-File-System, mit dem die Container-Instanzen initiiert werden. Die Wahl des verwendeten Linux-Filesystems – OverlayFS, Device Mapper, BTRFS oder AUFS – kann Auswirkungen auf die Möglichkeit haben, die Images effizient zu erstellen, zu betreiben und zu speichern. Die Performance und damit zusammenhängende Probleme erfordern in der Regel eine Fehlersuche im Filesystem des Linux-Hosts.

Red Hat arbeitet mit der Cloud Native Computing Foundation (CNCF) zusammen, um Container-Implementierungen mit „Kubernetes“ in „OpenShift“ in umfangreichen Umgebungen zu testen. In einem Benchmark-Test im März 2017 wurden Container einerseits auf einem Bare-Metal-Cluster getestet, der aus 100 physikalischen Servern bestand, und andererseits auf einem Cluster mit 2.048 virtuellen Maschinen.

Dickes Ding: Kubernetes 1.6 und vieles, vieles mehr

Cloud Native Computing Foundation

Dickes Ding: Kubernetes 1.6 und vieles, vieles mehr

03.04.17 - „Das Ding wird riesig, viel größer als OpenStack jemals werden könnte“. Darin waren sich die Mitglieder der erst im vergangenen Jahr gegründeten Non-Profit-Organisation Cloud Native Computing Foundation (CNCF) unter dem Dach der Linux Foundation einig, als sie sich vergangene Woche zur „KubeCon/CloudNativCon“ in Berlin mit Fans und Kontributoren trafen, rund 1.500 an der Zahl. Es geht um eine containerisierte, in Micro-Services verspackte IT, im Mittelpunkt „Kubernetes“, „Docker“ und „CoreOS“. lesen

Die Testergebnisse zeigen, wie stark die Container-Performance von der Linux-Performance abhängig ist. Anbieter wie Red Hat nutzen daher die Kenntnisse und Erfahrungen ihres Linux-Performance- und Skalierungsteams und arbeiten mit Kunden und der Community zusammen, um die beste Konfiguration für den Betrieb von Containern in sehr großen Umgebungen zu ermitteln.

Letztlich wollen Unternehmen, die Container für ihre produktiven Applikationen einsetzen, sichergehen, dass die Container zuverlässig laufen. Egal, ob es um Themen wie Sicherheit, Performance, Skalierbarkeit oder Qualität im Allgemeinen geht – die Zuverlässigkeit der eingesetzten Container hat sehr viel mit der Zuverlässigkeit der Linux-Distribution zu tun, unter der sie laufen.

Was ist Docker?

Wenn Container untrennbar mit Linux verbunden sind, was ist dann Docker? Das ist abhängig vom Bezugsrahmen. Die meisten Menschen kennen Docker als ein im März 2013 gestartetes Open-Source-Projekt, das die Implementierung von Applikations-Containern unter Linux automatisiert. Das Docker-Projekt ist eines der bekanntesten Open-Source-Projekte der letzten Jahre; das Docker Github Repository verzeichnet mehr als 1.600 Mitwirkende und 41.000 so genannte GitHub-Sterne.

Die „Docker Container Engine“ verwaltet die Konfiguration der Linux Kernel Namespaces, weitere Sicherheitsfunktionen sowie die cgroups und hat ein mehrschichtiges Paketierungsformat für Content eingeführt, der in einem Container läuft. Für Entwickler ist es damit einfach, Container auf ihrer lokalen Maschine zu betreiben und nicht veränderbare Images zu erzeugen, die konsistent auf anderen Maschinen und in verschiedenen Umgebungen laufen. Die Runtime für diese Container ist nicht Docker, sondern Linux.

Das Ziel der im Sommer 2015 gegründeten Open Container Initiative (OCI) ist es, offene Industriestandardspezifikationen für das Container-Format (Image-Spec) und die Runtime (Runtime-Spec) zu erstellen. Im Laufe der Zeit haben die am Docker-Projekt Beteiligten damit begonnen, die untere Ebene der Container-Runtime als getrennte Projekte, einschließlich OCI runC und vor Kurzem containerd, herauszulösen und an die Cloud Native Computing Foundation (CNCF) zu übergeben.

Das Unternehmen Docker

Darüber hinaus ist Docker auch der Name eines Unternehmens in Privatbesitz, welches das Docker-Projekt initiierte und kommerzielle Software unter dem gleichen Namen verkauft. Die „Docker Enterprise Edition“ (EE) kombiniert „Docker Container Engine“ (einschließlich runc und containerd) mit weiteren Orchestrierungs-, Verwaltungs- und Sicherheitsfunktionen.

Die Produkte von Docker stehen im Wettbewerb mit einer wachsenden Zahl von Anbietern, die Best-of-Breed-Lösungen für die Erstellung, Implementierung und Verwaltung von Containern anbieten. Dazu zählt beispielsweise Red Hat mit Lösungen wie OpenShift, Red Hat Enterprise Linux und „Red Hat Enterprise Linux Atomic Host“. Andere unabhängige Softwarehersteller, wie CoreOS, Rancher und VMware, bieten Container-Management-Plattformen. Die großen Cloud-Provider, wie Amazon, Google und Microsoft, stellen Hosted Container Services in der Public Cloud bereit.

Das Orchestrierungs-Framework "Kubernetes" nimmt die "Docker"-Images und platziert sie dem Applikations-Bauplan zufolge auf den Container-Hosts.
Das Orchestrierungs-Framework "Kubernetes" nimmt die "Docker"-Images und platziert sie dem Applikations-Bauplan zufolge auf den Container-Hosts. (Bild: Red Rat)

Container-Anbieter und Linux-Anbieter

Das Linux-Betriebssystem ist von grundlegender Bedeutung für den Betrieb von containerisierten Applikationen – angefangen vom Kernel über das Filesystem bis hin zum Netzwerk. Container bieten eine schnelle, effiziente und portable Abstraktion zum Einsatz von Applikationen unter Linux in verschiedenen Umgebungen wie physikalische Server, Virtualisierungsplattformen, Private und Public Clouds.

Je mehr Unternehmen Container von Testumgebungen in den produktiven Einsatz überführen, desto häufiger stehen sie vor der Frage, ob sie ihre selbstentwickelte Container-Lösung durch eine Container-Plattform inklusive Service und Support ersetzen sollen. Oft werden Sicherheitsbedenken als größte Hürde für die produktive Nutzung von Containern genannt. Dieser Einwand findet sich beim Einsatz nahezu jeder neuen Technologie; das war schon so bei der Virtualisierung zu Beginn des letzten Jahrzehnts.

Auch damals hieß es schon „für die Entwicklung geeignet, aber nicht für die Produktion“. Heute nutzen Unternehmen wie selbstverständlich die Virtualisierung selbst für die komplexesten und Mission-Critical-Systeme und Applikationen. Die gleiche Entwicklung setzt aktuell auch bei Containern ein. Auch hier geht es wieder um zentrale Fragen: Wie zuverlässig ist die Container-Plattform eines Anbieters? Wie sicher ist sie? Kann sie skalieren? Linux-Container können hier eindeutige Vorteile für sich verbuchen.

* Joe Fernandes ist Senior Director, Product Management, OpenShift, Atomic, and Linux Containers bei Red Hat.

Was meinen Sie zu diesem Thema?
Wenn es mit Solaris alles besser geht, warum wird es kaum eingesetzt ? Hab bishcer kein Hoster...  lesen
posted am 12.09.2017 um 22:59 von Unregistriert

Also ich wäre vorsichtig mit diesen Behauptungen, weil: mit Solaris geht das alles noch wesentlich...  lesen
posted am 24.08.2017 um 13:00 von Unregistriert


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44848169 / Middleware)