Was sind Container?

9. Mai 2024

Autoren

Ian Smalley

Senior Editorial Strategist

Was sind Container?

Container sind ausführbare Softwareeinheiten, die den Anwendungscode zusammen mit seinen Bibliotheken und Abhängigkeiten verpacken. Sie ermöglichen die Ausführung von Code in jeder Computerumgebung, sei es eine Desktop-, eine traditionelle IT- oder eine Cloud-Infrastruktur.

Container machen sich eine Form der Betriebssystemvirtualisierung zunutze, bei der Funktionen des Betriebssystemkernels (z. B. Linux-Namespaces und Cgroups, Windows-Silos und Jobobjekte) verwendet werden können, um Prozesse zu isolieren und die Menge an CPU, Speicher und Festplatte zu steuern, auf die diese Prozesse zugreifen können.

Container sind mobiler und ressourceneffizienter als Virtual Machines (VMs) und haben sich zu den De-facto-Recheneinheiten moderner cloudnativer Anwendungen entwickelt. Darüber hinaus sind Container für die zugrunde liegende IT-Infrastruktur, die hybride Multicloud-Einstellungen ermöglicht, von entscheidender Bedeutung – die Kombination von On-Premises, Private CloudPublic Cloud und mehr als einem Cloud-Service von mehr als einem Cloud-Anbieter.

Laut einem Bericht von Business Research Insights1 wurde der weltweite Markt für Containertechnologie im Jahr 2021 auf 496,4 Millionen US-Dollar beziffert und wird bis 2031 voraussichtlich 3123,42 Millionen US-Dollar erreichen, mit einer durchschnittlichen jährlichen Wachstumsrate (CAGR) von 19,8 %.

Luftaufnahme einer Autobahn

Bleiben Sie in der Cloud

Abonnieren Sie den wöchentlichen Think-Newsletter und erhalten Sie Tipps von Experten zur Optimierung von Multi-Cloud-Einstellungen in Zeiten von KI.

Container versus Virtual Machines

Eine Möglichkeit, einen Container besser zu verstehen, besteht darin, zu verstehen, wie er sich von einer herkömmlichen Virtual Machine (VM) unterscheidet, die eine virtuelle Darstellung oder Emulation eines physischen Computers ist. Ein virtueller Computer wird oft als Gast bezeichnet, während der physische Computer, auf dem er ausgeführt wird, als Host bezeichnet wird.

Virtualisierungstechnologie macht VMs möglich. Ein Hypervisor – eine kleine Softwarebene – weist jeder VM physische Rechenressourcen (z. B. Prozessoren, Arbeitsspeicher, Speicher) zu. Es hält jede VM von den anderen getrennt, sodass sie sich nicht gegenseitig stören. Jede VM enthält dann ein Gastbetriebssystem und eine virtuelle Kopie der Hardware, die für die Ausführung des Betriebssystems erforderlich ist, sowie eine Anwendung und die zugehörigen Bibliotheken und Abhängigkeiten. VMware war eines der ersten Unternehmen, das Virtualisierungstechnologie auf Hypervisor-Basis entwickelte und vermarktete.

Anstatt die zugrunde liegende Hardware zu virtualisieren, virtualisieren Container das Betriebssystem (in der Regel Linux), so dass 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 schneller und portabler als VMs sind.

Container und Virtual Machines schließen sich nicht gegenseitig aus. Ein Unternehmen könnte beispielsweise beide Technologien nutzen, indem es Container in VMs ausführt, um die Isolierung und Sicherheit zu erhöhen, und bereits installierte Tools für Automatisierung, Backups und Überwachung nutzt.

Einen genaueren Einblick in diesen Vergleich erhalten Sie unter „Container vs. VMs: Was ist der Unterschied?“ und schauen Sie sich dieses Video an:

Die wichtigsten Vorteile von Containern

Der Hauptvorteil von Containern, insbesondere im Vergleich zu einer VM, besteht darin, dass sie ein Abstraktionsniveau bieten, das sie leichtgewichtig und portabel macht. Zu ihren Hauptvorteilen gehören:

Leichtgewichtig

Container geben den Computer-Betriebssystemkernel frei, sodass keine vollständige Betriebssysteminstanz pro Anwendung erforderlich ist und Containerdateien klein und einfach auf Ressourcen gespeichert werden können. Die geringere Größe eines Containers, insbesondere im Vergleich zu einer VM, ermöglicht eine schnellere Ausführung und eine bessere Unterstützung von cloudnativen Anwendungen, die horizontal skalierbar sind.

Übertragbar und plattformunabhängig

Container tragen alle ihre Abhängigkeiten mit sich. Das bedeutet, dass Software einmal geschrieben und dann ausgeführt werden kann, ohne dass sie in verschiedenen Computing-Umgebungen (z. B. Laptops, Cloud und lokal) neu konfiguriert werden muss.

Unterstützt moderne Entwicklung und Architektur

Aufgrund ihrer Portabilität und Konsistenz über verschiedene Plattformen hinweg sowie ihrer geringen Größe eignen sich Container ideal für moderne Entwicklungs- und Anwendungsmuster – wie DevOpsServerlose und Microservices –, die durch regelmäßige Code-Bereitstellungen in kleinen Schritten erstellt werden.

Verbesserte Auslastung

Wie VMs ermöglichen Container Entwicklern und Betreibern, die CPU- und Speicherauslastung physischer Maschinen zu verbessern. Container gehen noch weiter, indem sie eine Microservices-Architektur ermöglichen, sodass Anwendungskomponenten granularer bereitgestellt und skaliert werden können. Dies ist eine attraktive Alternative zum Hochskalieren einer gesamten monolithischen Anwendung, wenn nur eine einzelne Komponente mit ihrer Last zu kämpfen hat.

Kürzere Entwicklungszeit

Container sind weniger auf Systemressourcen angewiesen, wodurch sie schneller verwaltet und bereitgestellt werden können als VMs. Diese Funktion hilft, Geld und Zeit bei der Anwendungsbereitstellung zu sparen und die Markteinführungszeit zu optimieren.

In einer IBM-Umfrage berichteten Entwickler und IT-Führungskräfte von vielen weiteren Vorteilen von Containern. Lesen Sie den vollständigen Bericht: Container im Unternehmen.

Was ist Containerisierung?

Container sind auf die Containerisierung angewiesen, die Verpackung von Softwarecode mit nur dem Betriebssystem (OS) und seinen relevanten Umgebungsvariablen, Konfigurationsdateien, Bibliotheken und Software-Abhängigkeiten.

Das Ergebnis ist ein Container-Image, das auf einer Container-Plattform ausgeführt wird. Ein Container-Image stellt Binärdaten dar, die eine Anwendung und alle ihre Softwareabhängigkeiten enthalten.

Die Containerisierung ermöglicht es, Anwendungen „einmal zu schreiben und überall auszuführen”, was die Portabilität erhöht, den Entwicklungsprozess beschleunigt, die Bindung an Cloud-Anbieter verhindert und mehr bietet.

Die Entwicklung der Containerisierung

Containerisierung und Prozessisolation gibt es schon seit Jahrzehnten2. Ein historischer Moment in der Entwicklung von Containern war 1979 die Entwicklung von Chroot, das Teil des Betriebssystems Unix Version 7 ist. Mit Chroot wurde das Konzept der Prozessisolation eingeführt, indem es den Dateizugriff einer Anwendung auf ein bestimmtes Verzeichnis (das Stammverzeichnis) und dessen Unterverzeichnisse (oder Unterprozesse) beschränkte.

Ein weiterer bedeutender Meilenstein wurde 2008 erreicht, als Linux-Container (LXCs) in den Linux-Kernel implementiert wurden, wodurch die Virtualisierung für eine einzelne Instanz von Linux vollständig ermöglicht wurde. Im Laufe der Jahre haben Technologien wie FreeBSD-Jails und AIX-Workload-Partitionen eine ähnliche Virtualisierung auf Betriebssystemebene ermöglicht.

Während LXC eine bekannte Laufzeitumgebung bleibt und Teil des Linux-Distributions- und herstellerneutralen Projekts3 ist, sind neuere Linux-Kernel-Technologien verfügbar. Ubuntu, ein modernes Open-Source-Linux-Betriebssystem, bietet ebenfalls diese Funktionalität.

Sehen Sie sich das Video an, um mehr über die Containerisierung zu erfahren:

Docker und das moderne Container-Zeitalter

Die meisten Entwickler betrachten das Jahr 2013 mit der Einführung von Docker als Beginn des modernen Container-Zeitalters. Docker ist eine Open-Source-Containerisierungs-Softwareplattform, die als  Platform as a Service (PaaS) fungiert und Entwicklern die Erstellung, Bereitstellung, Ausführung, Aktualisierung und Verwaltung von Containern ermöglicht.

Docker verwendet den Linux-Kernel (die Basiskomponente des Betriebssystems) und Kernel-Funktionen (wie Cgroups und Namespaces), um Prozesse zu trennen, damit sie unabhängig voneinander ausgeführt werden können. Docker konvertiert eine Anwendung und ihre Abhängigkeiten im Wesentlichen in einen virtuellen Container, der auf jedem Windows-, macOS- oder Linux-basierten Computersystem ausgeführt werden kann.

Docker basiert auf einer Client-Server-Architektur, wobei Docker Engine als zugrunde liegende Technologie dient. Docker stellt ein auf Images basierendes Bereitstellungsmodell bereit, das die gemeinsame Nutzung von Apps in verschiedenen Computing-Umgebungen vereinfacht.

Um etwaige Missverständnisse auszuräumen: Der Namensgeber der Docker-Containerplattform bezieht sich auch auf Docker, Inc.4, das Produktivitätswerkzeuge auf der Grundlage seiner Open-Source-Containerisierungsplattform und des Docker-Open-Source-Ökosystems und der Docker-Community5 entwickelt.

Im Jahr 2015 gründeten Docker und andere führende Unternehmen der Container-Industrie die Open Container Initiative6 , die Teil der Linux Foundation ist. Dabei handelt es sich um eine offene Verwaltungsstruktur, die speziell zu dem Zweck gegründet wurde, offene Branchenstandards für Containerformate und Laufzeitumgebungen zu schaffen.

Docker ist mit einem Marktanteil von 82,84 % das meistgenutzte Tool zur Containerisierung.7

Containerorchestrierung mit Kubernetes

Der Betrieb von Hunderttausenden von Containern in einem System kann unüberschaubar werden und erfordert eine Managementlösung zur Orchestrierung.

An dieser Stelle kommt die Container-Orchestrierung ins Spiel, die es Unternehmen ermöglicht, große Mengen während ihres gesamten Lebenszyklus zu verwalten und Folgendes bereitzustellen:

  • Bereitstellung
  • Redundanz
  • Zustandsüberwachung
  • Ressourcenzuweisung
  • Skalierung und Lastenausgleich
  • Wechsel zwischen physischen Hosts

Neben anderen Container-Orchestrierungsplattformen (z. B. Apache Mesos, Nomad, Docker Swarm) hat sich Kubernetes zum Branchenstandard entwickelt.

Die Kubernetes-Architektur besteht aus aktiven Clustern, die es Containern ermöglichen, auf mehreren Maschinen und in verschiedenen Umgebungen ausgeführt zu werden. Jeder Cluster besteht in der Regel aus Worker-Knoten, auf denen die containerisierten Anwendungen ausgeführt werden, und Steuerungsplan-Knoten, die den Cluster steuern. Die Steuerungsebene fungiert als Orchestrator des Kubernetes-Clusters. Sie umfasst mehrere Komponenten: den API-Server (verwaltet alle Interaktionen mit Kubernetes), den Steuerungsmanager (verwaltet alle Steuerungsprozesse), den Cloud-Controller-Manager (die Schnittstelle zur API des Cloud-Providers) usw. Worker-Knoten führen Container mithilfe von Container-Laufzeiten wie Docker aus. Pods, die kleinsten bereitstellbaren Einheiten in einem Cluster, enthalten einen oder mehrere App-Container und teilen Ressourcen wie Speicher- und Netzwerkinformationen.

Kubernetes ermöglicht es Entwicklern und Betreibern, den gewünschten Zustand ihrer gesamten Containerumgebung über YAML-Dateien zu deklarieren. Anschließend übernimmt Kubernetes die gesamte Verarbeitung, um diesen Zustand einzurichten und aufrechtzuerhalten. Zu den Aktivitäten gehören das Bereitstellen einer bestimmten Anzahl von Instanzen einer bestimmten Anwendung oder Workloads, das Neustarten dieser Anwendung bei einem Ausfall, der Lastausgleich, die automatische Skalierung, Bereitstellungen ohne Ausfallzeiten und vieles mehr. Die Container-Orchestrierung mit Kubernetes ist auch für die kontinuierliche Integration und Bereitstellung (CI/CD) oder die DevOps-Pipeline von entscheidender Bedeutung – was ohne  Automatisierung nicht möglich wäre.

Im Jahr 2015 spendete Google Kubernetes an die Cloud Native Computing Foundation (CNCF)8, die unter der Schirmherrschaft der Linux Foundation stehende und herstellerunabhängige Open-Source-Plattform für Cloud-Computing. Seitdem hat sich Kubernetes zum weltweit am weitesten verbreiteten Container-Orchestrierungstool für die Ausführung von containerbasierten Workloads entwickelt. Einem CNCF-Bericht9 zufolge ist Kubernetes das zweitgrößte Open-Source-Projekt der Welt (nach Linux) und das primäre Container-Orchestrierungstool für 71 % der Fortune-100-Unternehmen.

Was ist Container as a Service (CaaS)?

Container as a Service (CaaS) ist ein Cloud-Computing-Service, der es Entwicklern ermöglicht, containerisierte Anwendungen zu verwalten und bereitzustellen. Dies bietet Unternehmen jeder Größe Zugang zu portablen, skalierbaren Cloud-Lösungen.

CaaS bietet eine cloudbasierte Plattform, mit der Benutzer containerbasierte Virtualisierungs- und Containerverwaltungsprozesse optimieren können. CaaS-Anbieter bieten unzählige Funktionen, darunter (aber nicht ausschließlich) Container-Laufzeiten, Orchestrierungsebenen und persistente Speicherverwaltung.

Ähnlich wie Infrastructure as a Service (IaaS), Platform as a Service (PaaS) und Software as a Service (SaaS) ist CaaS von Cloud-Service-Anbietern (z. B. AWS, Google Cloud Services, IBM® Cloud, Microsoft Azure) über ein nutzungsbasiertes Preismodell verfügbar, das den Nutzern ermöglicht, nur für die von ihnen genutzten Dienste zu bezahlen.

AI Academy

KI-Bereitschaft mit Hybrid Cloud

Das Programm, das von führenden IBM Experten geleitet wird, soll Führungskräften dabei helfen, das nötige Wissen zu erwerben, um die Prioritäten für KI-Investitionen zu setzen, die zu mehr Wachstum führen.

Anwendungsfälle für Container

Unternehmen nutzen Container für folgende Zwecke:

Microservices

Container sind klein und leicht, weshalb sie sich gut für Microservice-Architekturen eignen, 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 Entwicklungs- und Betriebsteams, die DevOps-Methoden anwenden. So unterstützen Container beispielsweise DevOps-Pipelines, einschließlich der Implementierung von kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD).

Hybrid und Multicloud

Da Container überall konsistent ausgeführt werden können – auf Laptops, On-Premises- und Cloud-Umgebungen – sind sie eine ideale zugrunde liegende Architektur für Hybrid Cloud- und Multicloud-Szenarien, in denen Unternehmen in einer Mischung aus mehreren Public Clouds in Kombination mit ihrem eigenen Rechenzentrum arbeiten.

Modernisierung und Migration von Anwendungen

Einer der gängigsten Ansätze zur Anwendungsmodernisierung ist die Containerisierung von Anwendungen zur Vorbereitung der Cloud-Migration.

KI- und ML-Workloads

Durch Containerisierung (d. h. Docker-Images, die mit Kubernetes orchestriert werden) können DevOps- Pipelines schnell Anwendungen für künstliche Intelligenz (KI) und maschinelles Lernen (ML) in Cloud-Computing-Umgebungen bereitstellen.

Generative KI

Container bieten auch eine effiziente Möglichkeit, die großen Sprachmodelle (LLMs) im Zusammenhang mit generativer KI bereitzustellen und zu verwalten, und sorgen in Verbindung mit Orchestrierungstools für Portabilität und Skalierbarkeit. Darüber hinaus können Änderungen am LLM schnell in ein neues Container-Image gepackt werden, was die Entwicklung und das Testen beschleunigt.

Das erweiterte Container-Ökosystem: Istio und Knative

Neben Kubernetes sind zwei der beliebtesten Projekte im Containerökosystem Istio und Knative.

Istio Service Mesh

Da Entwickler Container verwenden, um Microservice zu erstellen und auszuführen, gehen die Belange des Managements über die Lebenszyklusbetrachtungen einzelner Container hinaus und betreffen die Art und Weise, wie eine große Anzahl kleiner Dienste – oft als „Service Mesh” bezeichnet – miteinander verbunden sind und zueinander in Beziehung stehen. Istio erleichtert Entwicklern die Bewältigung der damit verbundenen Herausforderungen in Bezug auf Erkennung, Datenverkehr, Überwachung, Sicherheit und mehr.

Knativ und Serverless

Knative (ausgesprochen 'key-neytive') ist eine Open-Source-Plattform, die einen einfachen Einstieg in das Serverless Computing ermöglicht. Dabei handelt es sich um ein Cloud-Computing-Modell für die Entwicklung und Ausführung von Anwendungen, mit dem Entwickler Code ausführen können, ohne Server oder Backend-Infrastruktur bereitstellen oder verwalten zu müssen.

Anstatt eine laufende Code-Instanz bereitzustellen, die im Leerlauf auf Anfragen wartet, wird der Code bei Bedarf hoch- oder herunterskaliert, wenn die Nachfrage schwankt. Wenn der Code schließlich nicht mehr gebraucht wird, wird er wieder entfernt. Serverless verhindert die Verschwendung von Rechenkapazität und Energie und senkt Kosten, da Sie nur dann für die Ausführung des Codes zahlen, wenn er ausgeführt wird.

Container-Sicherheit und -Governance

Da Container bei der Softwareentwicklung und -bereitstellung in der Hybrid Cloud-Geschäftswelt eine wichtige Rolle spielen, müssen Unternehmen sicherstellen, dass ihre containerisierten Workloads vor externen und internen Sicherheitsbedrohungen geschützt sind.

Container können überall eingesetzt werden, wodurch neue Angriffsflächen in der Umgebung der containerbasierten Umgebung entstehen. Zu den anfälligen Sicherheitsbereichen gehören Container-Images, Image-Register, Container-Laufzeiten, Container-Orchestrierungsplattformen und Host-Betriebssysteme.

Zunächst müssen Unternehmen die Containersicherheit in ihre Sicherheitsrichtlinien und Gesamtstrategie integrieren. Solche Strategien müssen bewährte Sicherheitspraktiken sowie cloudbasierte Sicherheitssoftwaretools umfassen. Dieser ganzheitliche Ansatz sollte so konzipiert sein, dass er containerisierte Anwendungen und die ihnen zugrunde liegende Infrastruktur während des gesamten Container-Lebenszyklus schützt.

Zu den besten Sicherheitspraktiken gehört eine Zero-Trust-Strategie, die davon ausgeht, dass die Sicherheit eines komplexen Netzwerks immer durch externe und interne Bedrohungen gefährdet ist. Darüber hinaus verlangen Container einen DevSecOps -Ansatz. DevSecOps ist ein Sicherheitsansatz, der die Integration von Sicherheitspraktiken in jeder Phase des Softwareentwicklungszyklus automatisiert – vom ersten Entwurf über die Integration, das Testen und die Bereitstellung bis hin zum Deployment.

Unternehmen müssen auch die richtigen Container-Sicherheitstools nutzen, um Risiken zu minimieren. Automatisierte Sicherheitslösungen umfassen Konfigurationsmanagement, Zugriffskontrolle, Scannen nach Malware oder Cyberangriffen, Netzwerksegmentierung, Überwachung und weitere Aspekte.

Zusätzlich stehen Software-Tools zur Verfügung, die sicherstellen, dass containerisierte Workloads Compliance- und Regulierungsstandards wie der DSGVO, HIPAA usw. entsprechen.

Weiterführende Lösungen
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud ist eine vollständig verwaltete OpenShift Container Platform (OCP).

Red Hat OpenShift erkunden
Container-Lösungen

Container-Lösungen führen Container-Workload aus und skalieren sie mit Sicherheit, Open-Source-Innovation und schneller Bereitstellung.

Container erkunden
Cloud-Beratungsleistungen 

Schalten Sie mit IBM Cloud Consulting Services neue Funktionen frei und steigern Sie die geschäftliche Agilität. Entdecken Sie, wie Sie mit Hybrid-Cloud-Strategien und Expertenpartnerschaften gemeinsam Lösungen entwickeln, die digitale Transformation beschleunigen und die Leistung optimieren können.

Cloud-Services
Machen Sie den nächsten Schritt

Modernisieren Sie Ihre Infrastruktur mit den Containerlösungen von IBM. Mit der umfassenden Container-Plattform von IBM können Sie containerisierte Workloads flexibel, sicher und effizient über verschiedene Umgebungen hinweg ausführen, skalieren und verwalten.

Containerlösungen kennenlernen Kostenloses IBM Cloud-Konto erstellen