Was ist Containerisierung?

Containerisierung ist ein Softwarebereitstellungsprozess, bei dem der Code einer Anwendung mit allen Dateien und Bibliotheken gebündelt wird, die für die Ausführung in einer beliebigen Infrastruktur benötigt werden. Um eine Anwendung auf Ihrem Computer auszuführen, mussten Sie traditionell die Version installieren, die dem Betriebssystem Ihres Computers entsprach. Beispielsweise mussten Sie die Windows-Version eines Softwarepakets auf einem Windows-Computer installieren. Mit Containerisierung können Sie jedoch ein einzelnes Softwarepaket oder einen Container erstellen, der auf allen Arten von Geräten und Betriebssystemen ausgeführt wird. 

Was sind die Vorteile der Containerisierung?

Entwickler verwenden Containerisierung zum Erstellen und Bereitstellen moderner Anwendungen aufgrund der folgenden Vorteile. 

Portierbarkeit

Softwareentwickler verwenden Containerisierung, um Anwendungen in mehreren Umgebungen bereitzustellen, ohne den Programmcode neu schreiben zu müssen. Sie erstellen eine Anwendung einmal und stellen sie auf mehreren Betriebssystemen bereit. Beispielsweise führen sie dieselben Container auf Linux- und Windows-Betriebssystemen aus. Entwickler aktualisieren auch Legacy-Anwendungscode auf moderne Versionen, indem sie Container für die Bereitstellung verwenden.

Skalierbarkeit

Container sind leichtgewichtige Softwarekomponenten, die effizient laufen. Beispielsweise kann eine virtuelle Maschine eine containerisierte Anwendung schneller starten, da sie kein Betriebssystem starten muss. Daher können Softwareentwickler problemlos mehrere Container für verschiedene Anwendungen auf einem einzigen Computer hinzufügen. Der Container-Cluster verwendet Rechenressourcen desselben gemeinsam genutzten Betriebssystems, aber ein Container beeinträchtigt nicht den Betrieb anderer Container.  

Fehlertoleranz

Softwareentwicklungsteams verwenden Container, um fehlertolerante Anwendungen zu erstellen. Sie verwenden mehrere Container, um Microservices in der Cloud auszuführen. Da containerisierte Microservices in isolierten Benutzerbereichen betrieben werden, wirkt sich ein einzelner fehlerhafter Container nicht auf die anderen Container aus. Dies erhöht die Belastbarkeit und Verfügbarkeit der Anwendung.

Agilität

Containerisierte Anwendungen werden in isolierten Computerumgebungen ausgeführt. Softwareentwickler können Fehler beheben und den Anwendungscode ändern, ohne das Betriebssystem, die Hardware oder andere Anwendungsdienste zu beeinträchtigen. Sie können Software-Release-Zyklen verkürzen und mit dem Containermodell schnell an Updates arbeiten.

Was sind Anwendungsfälle für Containerisierung?

Im Folgenden sind einige Anwendungsfälle der Containerisierung aufgeführt.

Cloud-Migration

Cloud-Migration oder der Lift-and-Shift-Ansatz ist eine Softwarestrategie, bei der Legacy-Anwendungen in Containern gekapselt und in einer Cloud-Computing-Umgebung bereitgestellt werden. Unternehmen können ihre Anwendungen modernisieren, ohne den gesamten Softwarecode neu schreiben zu müssen.

Übernahme der Microservice-Architektur

Unternehmen, die Cloud-Anwendungen mit Microservices erstellen möchten, benötigen Containerisierungstechnologie. Die Microservice-Architektur ist ein Softwareentwicklungsansatz, der mehrere voneinander abhängige Softwarekomponenten verwendet, um eine funktionale Anwendung bereitzustellen. Jeder Microservice hat eine einzigartige und spezifische Funktion. Eine moderne Cloud-Anwendung besteht aus mehreren Microservices. Beispielsweise kann eine Video-Streaming-Anwendung über Microservices für Datenverarbeitung, Benutzerverfolgung, Abrechnung und Personalisierung verfügen. Containerisierung bietet das Softwaretool, um Microservices als bereitstellbare Programme auf verschiedenen Plattformen zu packen.

IoT-Geräte

Internet der Dinge (IoT)-Geräte enthalten begrenzte Rechenressourcen, was die manuelle Softwareaktualisierung zu einem komplexen Prozess macht. Die Containerisierung ermöglicht es Entwicklern, Anwendungen einfach auf IoT-Geräten bereitzustellen und zu aktualisieren.

Wie funktioniert die Containerisierung?

Die Containerisierung umfasst die Erstellung autarker Softwarepakete, die unabhängig von den Computern, auf denen sie ausgeführt werden, konsistent funktionieren. Softwareentwickler erstellen und stellen Container-Images bereit, d. h. Dateien, die die für die Ausführung einer containerisierten Anwendung erforderlichen Informationen enthalten. Entwickler verwenden Containerisierungstools, um Container-Images basierend auf der Image-Spezifikation der Open Container Initiative (OCI) zu erstellen. OCI ist eine Open-Source-Gruppe, die ein standardisiertes Format zum Erstellen von Container-Images bereitstellt. Container-Images sind schreibgeschützt und können vom Computersystem nicht geändert werden.

Container-Images sind die oberste Ebene in einem containerisierten System, das aus den folgenden Layern besteht.

Infrastruktur

Infrastruktur ist die Hardwareschicht des Containermodells. Sie bezieht sich auf den physischen Computer oder Bare-Metal-Server, auf dem die containerisierte Anwendung ausgeführt wird. 

Betriebssystem

Die zweite Ebene der Containerisierungsarchitektur ist das Betriebssystem. Linux ist ein beliebtes Betriebssystem für die Containerisierung mit On-Premises-Computern. Beim Cloud-Computing verwenden Entwickler Cloud-Dienste wie AWS EC2, um containerisierte Anwendungen auszuführen. 

Container-Engine

Die Container-Engine oder Containerlaufzeit ist ein Softwareprogramm, das Container basierend auf den Container-Images erstellt. Es fungiert als Vermittler zwischen den Containern und dem Betriebssystem und stellt die von der Anwendung benötigten Ressourcen bereit und verwaltet sie. Beispielsweise können Container-Engines mehrere Container auf demselben Betriebssystem verwalten, indem sie sie unabhängig von der zugrunde liegenden Infrastruktur und voneinander halten. 

Anwendung und Abhängigkeiten

Die oberste Ebene der Containerisierungsarchitektur ist der Anwendungscode und die anderen Dateien, die er ausführen muss, wie Bibliotheksabhängigkeiten und zugehörige Konfigurationsdateien. Diese Schicht kann auch ein schlankes Gast-Betriebssystem enthalten, das über das Host-Betriebssystem installiert wird.

Was ist Container-Orchestrierung?

Container-Orchestrierung ist eine Softwaretechnologie, die die automatische Verwaltung von Containern ermöglicht. Dies ist für die Entwicklung moderner Cloud-Anwendungen erforderlich, da eine Anwendung Tausende von Microservices in ihren jeweiligen Containern enthalten kann. Die große Anzahl von containerisierten Microservices macht es Softwareentwicklern unmöglich, diese manuell zu verwalten.

Vorteile der Container-Orchestrierung

Entwickler verwenden Tools zur Container-Orchestrierung, um Container automatisch zu starten, anzuhalten und zu verwalten. Container-Orchestratoren ermöglichen es Entwicklern, Cloud-Anwendungen präzise zu skalieren und menschliche Fehler zu vermeiden. Sie können beispielsweise überprüfen, ob Container mit angemessenen Ressourcen von der Host-Plattform bereitgestellt werden. 

Welchen Arten von Container-Technologie gibt es?

Im Folgenden finden Sie einige Beispiele für beliebte Technologien, die Entwickler für die Containerisierung verwenden.

Docker

Docker oder Docker Engine ist eine beliebte Open-Source-Container-Laufzeitumgebung, mit der Softwareentwickler containerisierte Anwendungen auf verschiedenen Plattformen erstellen, bereitstellen und testen können. Docker-Container sind eigenständige Pakete von Anwendungen und zugehörigen Dateien, die mit dem Docker-Framework erstellt werden.

Linux

Linux ist ein Open-Source-Betriebssystem mit integrierter Container-Technologie. Linux-Container sind eigenständige Umgebungen, in denen mehrere Linux-basierte Anwendungen auf einem einzigen Host-Computer ausgeführt werden können. Softwareentwickler verwenden Linux-Container, um Anwendungen bereitzustellen, die große Datenmengen schreiben oder lesen. Linux-Container kopieren nicht das gesamte Betriebssystem in ihre virtualisierte Umgebung. Stattdessen bestehen die Container aus notwendigen Funktionalitäten, die im Linux-Namespace zugewiesen sind.  

Kubernetes

Kubernetes ist ein beliebter Open-Source-Container-Orchestrator, mit dem Softwareentwickler eine Vielzahl von Microservices bereitstellen, skalieren und verwalten. Es verfügt über ein deklaratives Modell, das die Automatisierung von Containern erleichtert. Das deklarative Modell stellt sicher, dass Kubernetes die entsprechenden Maßnahmen ergreift, um die Anforderungen basierend auf den Konfigurationsdateien zu erfüllen. 

Was ist eine virtuelle Maschine?

Eine virtuelle Maschine (VM) ist eine digitale Kopie der physischen Hardware und des Betriebssystems der Hostmaschine. Eine Hostmaschine verfügt möglicherweise über mehrere VMs, die sich CPU, Speicher und Arbeitsspeicher teilen. Ein Hypervisor, bei dem es sich um eine Software handelt, die VMs überwacht, weist allen VMs Rechenressourcen zu, unabhängig davon, ob die Anwendungen sie verwenden.

Containerisierung im Vergleich zu virtuellen Maschinen

Containerisierung ist ein ähnliches, aber verbessertes Konzept einer VM. Anstatt die Hardwareschicht zu kopieren, entfernt die Containerisierung die Betriebssystemschicht aus der eigenständigen Umgebung. Dadurch kann die Anwendung unabhängig vom Host-Betriebssystem ausgeführt werden. Die Containerisierung verhindert Ressourcenverschwendung, da Anwendungen genau mit den Ressourcen ausgestattet werden, die sie benötigen. 

Was ist die serverlose Datenverarbeitung?

Serverless Computing bezieht sich auf eine Cloud-Computing-Technologie, bei der der Cloud-Anbieter die Serverinfrastruktur, die eine Anwendung antreibt, vollständig verwaltet. Das bedeutet, dass Entwickler und Organisationen keine Ressourcen auf dem Cloud-Server konfigurieren, warten oder bereitstellen müssen. Serverless-Computing ermöglicht es Unternehmen, Rechenressourcen automatisch entsprechend der Workload zu skalieren. 

Containerisierung im Vergleich zu Serverless-Computing

Serverless Computing ermöglicht die sofortige Bereitstellung von Anwendungen, da keine Abhängigkeiten wie Bibliotheken oder Konfigurationsdateien erforderlich sind. Der Cloud-Anbieter erhebt keine Gebühren für Rechenressourcen, wenn sich die Serverless-Anwendung im Leerlauf befindet. Container hingegen sind portabler und geben Entwicklern die vollständige Kontrolle über die Anwendungsumgebung. 

Was ist cloudnativ?

Cloudnative ist eine Softwareentwicklungsmethode, die eine Anwendung in der Cloud erstellt, testet und bereitstellt. Der Begriff cloudnativ bedeutet, dass die Anwendung in einer Cloud-Computing-Umgebung entstanden ist und sich dort befindet. Unternehmen entwickeln cloudnative Anwendungen, weil sie hochgradig skalierbar, belastbar und flexibel sind.

Containerisierung im Vergleich zu cloudnativ

Die cloudnative Anwendungsentwicklung erfordert andere Technologien und Ansätze als herkömmliche monolithische Anwendungen. Containerisierung ist eine der Technologien, mit denen Entwickler cloudnative Anwendungen erstellen können. Es arbeitet mit anderen cloudnativen Technologien wie Service Mesh und APIs zusammen, damit Microservices in einer cloudnativen Anwendung kohärent arbeiten können. 

Was ist AWS App2Container?

AWS App2Container ist ein Containerisierungstool, mit dem Softwareentwickler Legacy-Anwendungen modernisieren können. Entwickler verwenden App2Container, um Java- und .NET-Anwendungen in containerisierte Anwendungen umzuwandeln:

  • App2Container bietet Standardtools für die Migration vorhandener plattformbasierter Anwendungen in die AWS-Umgebung.
  • Mit App2Container können sich Entwickler auf Sicherheit bei der Skalierung von Cloud-Anwendungen verlassen.
  • Entwickler verwenden App2Container, um die Identifizierung von Abhängigkeiten und Konfigurationen beim Erstellen von Container-Images zu vereinfachen.

 Beginnen Sie mit der Containerisierung in AWS, indem Sie sich noch heute für ein AWS-Konto anmelden.

Containerisierung in AWS – nächste Schritte

Zusätzliche produktbezogene Ressourcen ansehen
Weitere Informationen zu Computing-Services 
Ein kostenloses Konto erstellen

Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS. 

Registrieren 
Beginnen Sie mit der Entwicklung in der Konsole

Beginnen Sie mit der Entwicklung mit AWS in der AWS-Managementkonsole.

Anmeldung