Container

menu icon

Container

Dieser Leitfaden befasst sich mit der Bedeutung von Containern im Cloud Computing, hebt die wichtigsten Vorteile hervor und zeigt das entstehende Ökosystem verwandter Technologien wie Docker, Kubernetes, Istio und Knative.

Was sind Container?

Container sind ausführbare Softwareeinheiten, in denen der Anwendungscode zusammen mit seinen Bibliotheken und Abhängigkeiten auf gängige Weise verpackt ist, sodass er überall ausgeführt werden kann, sei es auf dem Desktop, in der traditionellen IT oder in der Cloud.

Zu diesem Zweck nutzen Container eine Form der Betriebssystemvirtualisierung, in der Funktionen des Betriebssystems (beim Linux-Kernel die Namespaces und cgroups-Basiselemente) genutzt werden, um Prozesse zu isolieren und den CPU-, Speicher- und Plattenumfang zu steuern, den diese Prozesse nutzen.

Container sind klein, schnell und portabel, denn im Gegensatz zu einer virtuellen Maschine müssen Container nicht in jeder Instanz ein Gastbetriebssystem enthalten und können stattdessen einfach die Funktionen und Ressourcen des Host-Betriebssystems nutzen.

Container tauchten erstmals vor Jahrzehnten mit Versionen wie FreeBSD Jails und AIX Workload Partitions auf, aber die meisten modernen Entwickler erinnern sich an das Jahr 2013 als den Beginn der modernen Container-Ära mit der Einführung von Docker.

Container vs. virtuelle Maschinen (VMs)

Eine Möglichkeit, einen Container besser zu verstehen, besteht darin, zu verstehen, wie er sich von einer traditionellen virtuelle Maschine (VM) unterscheidet. Bei der traditionellen Virtualisierung – ob vor Ort oder in der Cloud – wird ein Hypervisor zur Virtualisierung physischer Hardware eingesetzt. Jede VM enthält dann ein Gastbetriebssystem, eine virtuelle Kopie der Hardware, die das Betriebssystem zur Ausführung benötigt, zusammen mit einer Anwendung und ihren zugehörigen Bibliotheken und Abhängigkeiten.

Anstatt die zugrunde liegende Hardware zu virtualisieren, virtualisieren Container das Betriebssystem (in der Regel Linux), sodass jeder einzelne Container nur die Anwendung und ihre Bibliotheken und Abhängigkeiten enthält. Das Fehlen des Gast-OS ist der Grund, warum Container so „leichtfüßig“ und damit schnell und portabel sind.

Einen tieferen Einblick in diesen Vergleich erhalten Sie in „Container vs. VMs: Wo liegt der Unterschied?

Vorteile von Containern

Der Hauptvorteil von Containern, insbesondere im Vergleich zu einer VM, ist die Bereitstellung einer Abstraktionsebene, die sie kompakt und portierbar macht.

  • Kompakt: Container nutzen den Kernel des Betriebssystems gemeinsam, sodass keine vollständige Betriebssysteminstanz pro Anwendung erforderlich ist und die Containerdateien klein und ressourcenschonend sind. Ihre geringere Größe, insbesondere im Vergleich zu virtuellen Maschinen, bedeutet, dass sie schnell hochgefahren werden können und Cloud-native Anwendungen, die horizontal skaliert werden, besser unterstützen.
  • Portierbar und plattformunabhängig: Container enthalten alle ihre Abhängigkeiten, was bedeutet, dass Software einmal geschrieben und dann ausgeführt werden kann, ohne dass sie auf Laptops, in der Cloud oder in firmeneigenen Computerumgebungen neu konfiguriert werden muss.
  • Unterstützt moderne Entwicklung und Architektur: Aufgrund ihrer plattformübergreifenden Portabilität/Konsistenz bei der Bereitstellung und ihrer geringen Größe eignen sich Container ideal für moderne Entwicklungs- und Anwendungsmuster wie DevOps, Serverless Computing und Microservices, die aus regelmäßigen Codebereitstellungen in kleinen Schritten bestehen.
  • Verbessert die Auslastung: Wie vorher die VMs ermöglichen Container den Entwicklern und Betreibern eine bessere CPU- und Speichernutzung physischer Maschinen. Container gehen sogar noch weiter: Da sie auch Microservice-Architekturen ermöglichen, können Anwendungskomponenten präziser bereitgestellt und skaliert werden, was eine attraktive Alternative zur Skalierung einer gesamten monolithischen Anwendung darstellt, weil eine einzelne Komponente mit der Last zu kämpfen hat.

In einer kürzlich von IBM durchgeführten Umfrage (PDF 1,4 MB) berichteten Entwickler und IT-Führungskräfte über viele weitere Vorteile der Verwendung von Containern. Mit dem interaktiven Tool unten können Sie sich diese Vorteile genauer ansehen:

Download des vollständigen Berichts Container im Unternehmen (PDF 1,4 MB)

Anwendungsfälle für Container

Container gewinnen zunehmend an Bedeutung, insbesondere in Cloud-Umgebungen. Viele Unternehmen erwägen sogar, Container als Ersatz für VMs als universelle Rechenplattform für ihre Anwendungen und Workloads einzusetzen. Innerhalb dieses sehr breiten Anwendungsspektrums gibt es jedoch einige wichtige Anwendungsfälle, in denen Container besonders wichtig sind.

  • Microservices: Container sind klein und kompakt, was sie zu einer guten Ergänzung für Microservice-Architekturen macht, bei denen Anwendungen aus vielen, lose gekoppelten und unabhängig voneinander einsetzbaren kleineren Diensten aufgebaut sind.
  • DevOps: Die Kombination von Microservices als Architektur und Containern als Plattform ist eine gemeinsame Grundlage für viele Teams, die DevOps als Methode für die Erstellung, Bereitstellung und Ausführung von Software einsetzen.
  • Hybrid-Cloud und Multi-Cloud: Da Container überall konsistent ausgeführt werden können, sowohl auf Laptops als auch in On-Premises- und Cloud-Umgebungen, sind sie eine ideale Basisarchitektur für Hybrid-Cloud- und Multi-Cloud-Szenarien, in denen Unternehmen eine Mischung aus mehreren öffentlichen Clouds in Kombination mit ihrem eigenen Rechenzentrum betreiben.
  • Modernisierung und Migration von Anwendungen: Einer der gängigsten Ansätze zur Anwendungsmodernisierung beginnt mit der Containerisierung der Anwendungen, damit diese in die Cloud migriert werden können.

Containerisierung

Um die Vorteile von Containern nutzen zu können, muss die Software anders konzipiert und verpackt werden. Dieser Prozess wird allgemein als Containerisierung bezeichnet.

Bei der Containerisierung einer Anwendung umfasst der Prozess die Paketierung einer Anwendung mit ihren relevanten Umgebungsvariablen, Konfigurationsdateien, Bibliotheken und Softwareabhängigkeiten. Das Ergebnis ist ein Container-Image, das dann auf einer Container-Plattform ausgeführt werden kann. Weitere Informationen finden Sie im Video „Containerization Explained“ (08:09):

Container-Orchestrierung mit Kubernetes

Als Unternehmen begannen, Container zu nutzen (oftmals als Teil moderner, nativer Cloud-Architekturen), kollidierte die Einfachheit des einzelnen Containers mit der Komplexität der Verwaltung von Hunderten (oder sogar Tausenden) von Containern in einem verteilten System.

Um diese Herausforderung zu bewältigen, hat sich die Containerorchestrierung als eine Möglichkeit etabliert, große Mengen von Containern während ihres gesamten Lebenszyklus zu verwalten, einschließlich:

  • Bereitstellung
  • Redundanz
  • Gesundheitsmonitoring
  • Ressourcenzuordnung
  • Skalierung und Lastausgleich
  • Wechsel zwischen physischen Hosts

Während viele Container-Orchestrierungsplattformen (wie Apache Mesos, Nomad und Docker Swarm) geschaffen wurden, um diese Herausforderungen zu bewältigen, wurde das 2014 von Google eingeführte Open-Source-Projekt Kubernetes schnell zur beliebtesten Container-Orchestrierungsplattform, auf die sich der Großteil der Branche standardisiert hat.

Kubernetes ermöglicht es Entwicklern und Betreibern, den Soll-Status ihrer gesamten Container-Umgebung über YAML-Dateien zu deklarieren. Kubernetes übernimmt dann die gesamte Arbeit, um diesen Status herzustellen und aufrechtzuerhalten, mit Aktivitäten, die die Bereitstellung einer bestimmten Anzahl von Instanzen einer bestimmten Anwendung oder Arbeitslast, den Neustart dieser Anwendung, wenn sie ausfällt, Lastausgleich, automatische Skalierung, Zero-Downtime-Bereitstellungen und mehr umfassen.

Für mehr Informationen über Kubernetes gibt Sai Vennam in dem folgenden Video (10:59) einen Überblick über Kubernetes:

 

Kubernetes wird jetzt von der Cloud Native Computing Foundation (CNCF) betrieben, einer anbieterunabhängigen Branchengruppe im Rahmen der Linux Foundation.

Istio, Knative und das wachsende Container-Ökosystem

Mit der zunehmenden Beliebtheit von Containern für die Paketierung und Ausführung von Anwendungen wächst auch das Ökosystem von Tools und Projekten, die für die Absicherung und Erweiterung von Produktionsanwendungen entwickelt wurden. Neben Kubernetes sind Istio und Knative zwei der beliebtesten Projekte im Container-Ökosystem.

Istio

Wenn Entwickler Container nutzen, um Microservice-Architekturen zu erstellen und auszuführen, geht es bei der Verwaltung nicht nur um den Lebenszyklus einzelner Container, sondern auch um die Art und Weise, wie eine große Anzahl kleiner Dienste, die häufig als „Servicenetz“ bezeichnet werden, miteinander verbunden sind und sich aufeinander beziehen. Istio wurde entwickelt, um Entwicklern die Bewältigung der damit verbundenen Herausforderungen in Bezug auf Erkennung, Datenverkehr, Überwachung, Sicherheit und vielem mehr zu erleichtern. Weitere Informationen zu Istio finden Sie unter „Was ist Istio?“ und sehen Sie sich dazu dieses Istio-Erklärer-Video (05:06) an:

 

Knative

Auch serverlose Architekturen werden immer beliebter, insbesondere in der cloudnativen Community. Der große Mehrwert von Knative liegt in seiner Fähigkeit, containerisierte Dienste als serverlose Funktionen bereitzustellen.

Anstatt die ganze Zeit aktiv zu sein und bei Bedarf zu reagieren (wie ein Server), kann eine serverlose Funktion „auf Null skalieren“, was bedeutet, dass sie überhaupt nicht läuft, wenn sie nicht aufgerufen wird. Dieses Modell kann bei der Anwendung auf Zehntausende von Containern enorme Mengen an Rechenleistung einsparen.

Weitere Informationen zu Knative finden Sie im Video „Was ist Knative?“(07:58):

Container und IBM Cloud

Die IBM Cloud-Container-Dienste basieren auf Open-Source-Technologien, wodurch Ihre Umstellung auf die Cloud erleichtert und beschleunigt wird. Erstellen von containerisierten Anwendungen unter Verwendung von Tools zur kontinuierlichen Integration und Continuous Delivery (CI/CD). Orchestrierung von Containern mit Diensten von Red Hat OpenShift oder Kubernetes. Modernisieren Sie außerdem bestehende Anwendungen mit der containerisierten IBM Middleware und Open-Source-Komponenten in IBM Cloud Paks.

Weitere Informationen zu Containern in der IBM Cloud.

Registrieren Sie sich für eine IBMid und erstellen Sie Ihr IBM Cloud-Konto.