Was sind (Software-)Container?

Portabilität macht Tempo!

| Autor / Redakteur: Otto Geißler* / Ulrike Ostler

Was sind (Software)-Container? Und wozu taugt diese Technologie?
Was sind (Software)-Container? Und wozu taugt diese Technologie? (Bild: © djama - stock.adob.com)

Auf Grund der zunehmenden Konfigurationen, Tools und Sicherheitsauflagen gestaltet es sich immer schwieriger, Anwendungen in einen anderen Kontext zu portieren. Praktische (Docker)-Container verpacken dagegen eine Anwendung und alles, was sie zum perfekten Betrieb braucht, in ein leicht transportierfähiges Paket. Ihr eigentliches Potenzial entfalten „Container“ aber erst im massenweisen Einsatz.

Wenn man bedenkt, dass die Menschheit längst in der Lage ist, Transportgüter in optimierter Form an alle Orte der Welt zu verschiffen, stimmt es nachdenklich, wenn es der IT-Welt erst seit Kurzem gelang, Anwendungen von einem Kontext in den nächsten problemlos zu portieren. So werden bereits seit den 1950er Jahren Güter nach einheitlichem Format weltweit per Container auf Schiffen und LKW mit beliebigem Inhalt befüllt und transportiert.

Damit lag der Begriff „Container“ nahe, als Docker sich dieses Muster zu eigen machte und beliebige Anwendungen mit allen notwendigen Kontextinformationen in einem so genannten „Docker-Container“ kapselte und sie so problemlos in die verschiedensten Umgebungen „transportiert“.

Container sind Linux

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

Container sind Linux

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

Das bedeutet, der „Container“ umfasst Software plus ein komplettes Dateisystem, das alles beinhaltet, was die Software zum Laufen bringen soll: Sourcecode, Systembibliotheken, System-Tools und eine Laufzeitumgebung. Damit wird gewährleistet, dass alles unabhängig von der Umgebung zuverlässig funktioniert.

Zu diesem Zweck kommt der Linux-Kernel und dessen Funktionen wie zum Beispiel Cgroups und Namespaces zum Einsatz, um Prozesse zu isolieren und diese unabhängig voneinander zu betreiben. Erstaunlich ist dabei der minimale Bedarf an Ressourcen sowie die hohe Geschwindigkeit, mit der ein solcher „Container“ geladen und ausgeführt werden kann. Im Gegensatz zu den virtuellen Maschinen gehören Wartezeiten von mehreren Minuten ebenfalls der Vergangenheit an.

Einfachheit durch Portabilität

Diese Unabhängigkeit ist der Dreh- und Angelpunkt des Containers und beschreibt die Fähigkeit, mehrere Prozesse und Apps getrennt voneinander auszuführen. Auf diese Weise wird die Infrastruktur besser genutzt und vor allem die Sicherheit bewahrt, die sich aus getrennten Systemen ergeben. Mithilfe dieser Technologien sind nun Entwickler in der Lage, so quasi automatisch „Umgebungen“ zu kreieren, für die sonst nur mühsam-langwierige Prozesse durchlaufen und aufwendige Hard- und Software bereitgestellt werden müssten.

Natürlich wäre das mithilfe von LXC schon früher möglich gewesen. Wobei hierfür spezielle Kenntnisse für die Applikationsentwickler erforderlich sind. Wogegen das „Docker-Container-Management“ es den Entwicklern beim Schnüren und Bereitstellen von „Containern“ mit standardisierten Tools, Verfahren und API extrem leicht macht. So lassen sich Applikationen mittels einer modularisierten Umgebung zwischen Clouds spielend leicht migrieren – ohne Mehraufwand! Kein Wunder, dass die „Container“-Virtualisierung in letzter Zeit immer populärer wurde.

Wenn aber immer mehr „Container“-Apps im Einsatz sind, die in einer Vielzahl an Bestandteilen zerlegt werden müssen, kann dies die Verwaltung bzw. Orchestrierung extrem erschweren. Dann müssen die „Container“ gruppiert werden, damit Dienste wie zum Beispiel Vernetzung oder Sicherheit in den „Containern“ bereitgestellt werden können.

Kubernetes oder Swarm?

Im Fokus der Container-Orchestrierung liegt die Auswahl der richtigen Tools. In der Regel entscheiden sich die meisten für eines der populärsten Angebote: „Docker Swarm“ oder „Kubernetes“. Wobei das Orchestrierungs-Tool Docker Swarm als Konkurrenzprodukt des Herstellers Docker zum bereits sehr erfolgreichen Kubernetes, ursprünglich von Google entwickelt.

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

Beide Lösungen sind imstande, massive „Container“-Umgebungen zu skalieren. Die Vorteile für Docker Swarm: Es wird Dockers Standard-API genutzt. Das heißt, Docker Swarm kann mit jeder Anwendung kommunizieren, mit der auch Docker kommuniziert. Die Nachteile: Docker Swarm bildet aber nur einen Teil einer Container-IaaS ab und es fehlen Features wie zum Beispiel Service Discovery, Replikation und einiges mehr.

Für Kubernetes spricht: Die Unterstützung durch Marktgigant Google sowie eine längere Marktpräsenz als Docker Swarm. Aber: Kubernetes nutzt ein anderes CLI, andere APIs und andere YAML-Definitionen als Docker. So kann Docker CLI oder Docker Compose auch nicht für die Container-Definition verwendet werden. Im Allgemeinen reagiert das vergleichsweise einfachere Docker Swarm schneller auf das Starten von Containern als Kubernetes. Andererseits gilt Kubernetes als ausgereifter, reicher an Features und damit komplexer. Letztlich entscheidet aber der konkrete Fall, für welche Lösung sich eine Organisation entscheiden sollte.

Ein Ökosystem an Lösungen

Da die „Container“-Technologien per se nicht in der Lage sind, eine größere Applikationslandschaft oder eine auf Microservice-Architekturen basierende Applikation adäquat zu verwalten, ist ein Ökosystem notwendig. Zahlreiche Tools rund um die „Container“- oder Docker-Welt haben sich im Open Container Ecosystem (früher Docker Ecosystem) aufgestellt.

Zu dieser Reihe gehören unter anderem Anwendungen, Services und Plattformen zu den Themen Orchestration, Monitoring, Networking, Sicherheit, Management, Container OS, Hosting und Service Provider, Entwickler-Tools, Entwickler-Plattformen und so weiter. Experten zufolge werden sich also die „Container“- oder Docker-Produkte zu einer Plattform mit eigenen Tools entwickeln. Dank der Lösungen von Drittanbieter können die Docker-„Container“ schon jetzt in bestehende Systemumgebungen gut integriert und so eine gesamte Plattform wirtschaftlicher betrieben werden.

Die Bedeutung nimmt zu

Die „Container“-Technologien lassen sich über Schnittstellen in alle wichtigen Infrastruktur-Umgebungen und Tools einfügen. Dazu gehören „Microsoft Azure“, „Google Cloud Platform“, „Amazon Web Services“, „IBM Bluemix“, „OpenStack Nova“, „Chef“, „Ansible“, „Puppet“ und „Salt“. Darüber hinaus werden die Platform-as-a-Service-Systeme „Cloud Foundry“, „OpenShift Origin“ und „Apprenda“ unterstützt.

Die zunehmende Bedeutung der Technologien wird vor allem durch die im Jahre 2015 aus der Taufe gehobene „Open Container Initiative (OCI)“ verstärkt. Unter der Ägide der „Linux Foundation“ hat sich eine weitere Initiative von Technologieführern herausgebildet. Dazu zählen Google, Cisco, IBM, Microsoft, Amazon Web Service, Red Hat, Oracle, Mesosphere, VMware, Pivotal und Intel. Diese Mitglieder haben es sich zum Ziel gesetzt, Standards für „Container“, die dazugehörigen Formate und Runtime-Umgebungen zu entwickeln und marktfähig zu machen.

* Otto Geißler ist freier IT-Journalist.

copyright

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