Was sind Container?
Erfahren Sie mehr über die Bedeutung von Containern im Cloud Computing, ihre wichtigsten Vorteile und das entstehende Ökosystem verwandter Technologien wie Docker, Kubernetes, Istio und Knative
IBM Newsletter abonnieren
Schwarzer und blauer Hintergrund mit gruppierten geometrischen Formen
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, bei der Funktionen des Betriebssystemkerns (z. B. Linux-Namespaces und Control Groups, Windows-Silos und Job-Objekte) genutzt werden können, um Prozesse zu isolieren und den Zugriff dieser Prozesse auf CPU, Speicher und Festplatte zu steuern.

Container sind kompakt, schnell und übertragbar, 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 Hostbetriebssystems nutzen.

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

Container und virtuelle Maschinen im Vergleich

Um besser zu verstehen, was ein Container ist, muss man den Unterschied zu einer herkömmlichen virtuellen Maschine (VM) kennen. Bei der herkömmlichen Virtualisierung – egal 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, sowie eine Anwendung und die 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 Gastbetriebssystems ist der Grund, warum Container so leichtgewichtig und damit schnell und portabel sind.

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

Vorteile von Containern

Der Hauptvorteil von Containern, insbesondere im Vergleich zu einer VM, ist, dass sie einen Abstraktionsgrad bieten, der sie kompakt und portierbar macht. Zu ihren wichtigsten Vorteilen zählen:

Geringes Gewicht: Container teilen sich den Kernel des Betriebssystems, 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 cloudnative Anwendungen, die horizontal skaliert werden, besser unterstützen.

Portabel und plattformunabhängig: Container nehmen alle ihre Abhängigkeiten mit sich, 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 DevOpsServerless und Microservices, die in kleinen Schritten mit regulärem Code bereitgestellt werden.

Verbessert die Auslastung: Wie VMs vor ihnen, ermöglichen Container Entwicklern und Betreibern, die CPU- und Speicherauslastung physischer Maschinen zu verbessern. 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.

Laden Sie den vollständigen Bericht „Container im Unternehmen“ herunter (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 Spektrums gibt es jedoch einige wichtige Anwendungsfälle, in denen Container besonders nützlich sind.

  • Microservices: Container sind klein und leichtgewichtig, 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-, 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 hybride Cloud und Multi-Cloud-Szenarien, in denen Unternehmen in einer Mischung aus mehreren öffentlichen Clouds in Kombination mit ihrem eigenen Rechenzentrum arbeiten.
  • Anwendungsmodernisierung und Migration: Einer der gängigsten Ansätze zur Anwendungsmodernisierung ist die Containerisierung von Anwendungen als Vorbereitung auf die Cloud-Migration.
Containerisierung

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

Bei der Containerisierung einer Anwendung umfasst der Prozess die Paketierung einer Anwendung mit ihren relevanten Umgebungsvariablen, Konfigurationsdateien, Bibliotheken und Software-Abhängigkeiten. Das Ergebnis ist ein Container-Image, das dann auf einer Container-Plattform ausgeführt werden kann.

Container-Orchestrierung mit Kubernetes

Als Unternehmen begannen, Container zu nutzen – oft 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, entstand die Containerorchestrierung als eine Möglichkeit, große Mengen von Containern während ihres gesamten Lebenszyklus zu verwalten, einschließlich:

  • Bereitstellung
  • Redundanz
  • Statusüberwachung
  • Ressourcenzuweisung
  • Skalierung und Lastausgleich
  • Wechsel zwischen physischen Hosts

Während viele Container-Orchestrierungsplattformen (wie Apache Mesos, Nomad und Docker Swarm) geschaffen wurden, wurde Kubernetes, ein 2014 von Google eingeführtes Open-Source-Projekt, 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 Containerumgebung über YAML-Dateien zu deklarieren. Kubernetes übernimmt dann die gesamte Arbeit, um diesen Zustand herzustellen und aufrechtzuerhalten, mit Aktivitäten wie der Bereitstellung einer bestimmten Anzahl von Instanzen von einer bestimmten Anwendung oder Arbeitslast, dem Neustart dieser Anwendung, wenn sie ausfällt, dem Lastausgleich, dem Auto-Scaling, der Bereitstellung ohne Ausfallzeiten und mehr.

Kubernetes wird jetzt von der Cloud Native Computing Foundation (CNCF) betrieben, einer anbieterunabhängigen Industriegruppe unter der Schirmherrschaft der Linux Foundation.

Das folgende Video zeigt, wie Kubernetes funktioniert:

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 – oft als „Servicenetz“ bezeichnet – 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. 

Erfahren Sie mehr über Istio

Knative

Auch serverlose Architekturen werden immer beliebter, insbesondere in der Cloud-Native-Community. Knative bietet zum Beispiel einen erheblichen Mehrwert aufgrund der Möglichkeit, containerisierte Dienste als serverlose Funktionen bereitzustellen.

Anstatt ständig zu laufen 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. 

Das folgende Video erklärt mehr zu Knative:

Weiterführende Lösungen
Red Hat® OpenShift® on IBM® Cloud

Red Hat OpenShift on IBM Cloud nutzt OpenShift in Public-Cloud- und Hybridumgebungen, um Geschwindigkeit, Marktreaktionsfähigkeit, Skalierbarkeit und Zuverlässigkeit zu erreichen.

Red Hat OpenShift on IBM Cloud erkunden
IBM® Cloud Satellite

Mit IBM Cloud Satellite können Sie konsistente Cloud-Services überall starten – vor Ort, am Edge und in Public-Cloud-Umgebungen.

IBM Cloud Satellite erkunden
IBM Cloud Code Engine

Führen Sie Container-Images, Batch-Jobs oder Quellcode als serverlose Workloads aus – ohne Größenanpassung, Bereitstellung, Vernetzung oder Skalierung.

IBM Cloud Code Engine erkunden
IBM Cloud Container Registry

IBM Cloud Container Registry bietet Ihnen eine private Registry, mit der Sie Ihre Images verwalten und im Hinblick auf Sicherheitsprobleme überwachen können.

IBM Cloud Container Registry erkunden
Ressourcen Container im Unternehmen

Eine neue IBM Studie belegt die zunehmende Verbreitung von Containern und Kubernetes.

Kombinieren Sie die besten Eigenschaften von Cloud und traditioneller IT

Containerorchestrierung ist eine Schlüsselkomponente einer offenen Hybrid-Cloud-Strategie, mit der Sie Workloads von überall aus erstellen und verwalten können.

Was ist Docker?

Docker ist eine Open-Source-Plattform für die Erstellung, Bereitstellung und Verwaltung von containerisierten Anwendungen.

Machen Sie den nächsten Schritt

Red Hat OpenShift on IBM Cloud bietet Entwicklern schnelle, sichere Containerisierung und Bereitstellung von Unternehmens-Workloads in Kubernetes-Clustern. Damit können Sie mühsame und sich wiederholende Aufgaben in den Bereichen Sicherheitsmanagement, Compliance-Management, Implementierungsmanagement und fortlaufendes Lebenszyklusmanagement auslagern. Da IBM die OpenShift Container Platform (OCP) verwaltet, haben Sie mehr Zeit, sich auf Ihre Kernaufgaben zu konzentrieren.

Red Hat OpenShift on IBM Cloud erkunden