Unabhängige Experten- und Marktplattform für die Schweiz.

Presenting-Partner

Presenting-Partner Logo bluewaysPresenting-Partner Logo blueways
Presenting-Partner Logo Digitale SchweizPresenting-Partner Logo Digitale Schweiz
Presenting-Partner Logo EcoCloudPresenting-Partner Logo EcoCloud
Presenting-Partner Logo HostpointPresenting-Partner Logo Hostpoint
Presenting-Partner Logo Interxion SchweizPresenting-Partner Logo Interxion Schweiz
Presenting-Partner Logo ISE AG Informatik Solutions EinsiedelnPresenting-Partner Logo ISE AG Informatik Solutions Einsiedeln
07.08.2018

Container sind ein Bestandteil von Linux

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. Bei der grossen Mehrzahl von Containern handelt es sich um Linux-Container. Bei der Entscheidung für Container und deren Implementierung spielt die zugrundliegende 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 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.

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 schliesst 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. 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 grosse Zahl zertifizierter Images für verschiedene Programmiersprachen, Middleware und Datenbanken.

Container-Performance ist Linux-Performance
Ein Container-Image ist ein mehrschichtiges Linux-Filesystem, 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. 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 grossen 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 sogenannte 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, einschliesslich OCI runC und vor Kurzem containerd, herauszulösen und an die Cloud Native Computing Foundation (CNCF) zu übergeben.

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 (einschliesslich runc und containerd) mit weiteren Orchestrierungs-, Verwaltungs- und Sicherheitsfunktionen. Die Produkte von Docker stehen im Wettbe¬werb 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 grossen Cloud-Provider, wie Amazon, Google und Microsoft, stellen Hosted Container Services in der Public Cloud bereit.

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össte 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 hiess 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.


Abbildungen:

Abbildung 1

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

Abbildung 2   

Red Hat OpenShift Container Platform ermöglicht die dynamische Speicherbereitstellung sowohl für traditionelle als auch für Cloud-native und mandantenfähige Applikationen, die mehrere Anwendungen, Teams und Bereitstellungsprozesse unterstützen. (Quelle: Red Hat)

Abbildung 3  

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


* Dominik Wotruba ist Head of Solution Architecture bei Red Hat Schweiz
Red Hat Switzerland auf Cloud-Finder Schweiz


von:  Dominik Wotruba - Red Hat


SOCIAL NETWORKS
  • myCloudService

    Wählen Sie hier Ihre Anforderungen und lassen Sie sich die passenden Angebote / Anbieter anzeigen:

    • Dienstleistungen
    • Cloud Business Software
    • Infrastructure Cloud Services
    • Cloud Governance
    • Cloud-Security-Services
    • Cloud-Technologie /-Service-Art
    • RZ-Infrastruktur
    • Support Services
    • Usability
    • Zertifizierung / Empfehlung

    Cloud-/ DL-/ RZ-Anbieter


    Gartner Logo

    Buchempfehlung

    Partner

    Cloud-Finder Schweiz: Newsletter