Jump to section

Was ist Containerisierung?

URL kopieren

Containerisierung ist das Verpacken von Softwarecode in Pakete (Paketierung), die sämtliche erforderlichen Komponenten wie Libraries, Frameworks und andere Abhängigkeiten enthalten und in ihrem eigenen „Container" isoliert sind.

Auf diese Weise kann die Software oder Anwendung innerhalb ihres Containers in jede Umgebung verschoben und konsistent auf jeder Infrastruktur ausgeführt werden, unabhängig von der Umgebung oder dem Betriebssystem der Infrastruktur. Der Container fungiert als eine Art „Blase" oder Rechenumgebung, die eine Anwendung umgibt und sie von ihrem Umfeld unabhängig macht. Es handelt sich im Grunde genommen um eine voll funktionsfähige tragbare Rechenumgebung.

Container sind eine Alternative zum Codieren auf einer Plattform oder in einem Betriebssystem, wo das Verschieben einer Anwendung nur schwer möglich war, wenn der Code mit der neuen Umgebung nicht kompatibel war. Dies konnte zu Fehlern, Fehlern und Störungen führen, die behoben werden mussten (was mehr Zeit, weniger Produktivität und viel Frust bedeutete).

Durch die Paketierung einer Anwendung in einen Container, der plattform- und infrastrukturübergreifend verschoben werden kann, kann die Anwendung überall dort verwendet werden, wohin sie verschoben wird. Denn sie verfügt über alles, was für eine erfolgreiche Ausführung erforderlich ist.

Die Idee der Prozessisolation gibt es schon seit Jahren. Doch als Docker 2013 die Docker Engine einführte, wurde damit ein Standard für die Verwendung von Containern gesetzt. Die Engine verfügte über Tools, die für Entwicklungsteams einfach zu verwenden waren, und einen universellen Paketierungsansatz. Dies hat die Einführung der Containertechnologie weiter beschleunigt. Heute können Entwicklerinnen und Entwickler aus mehreren Container-Plattformen und -Tools auswählen, die die von Docker entwickelten Standards der Open Container Initiative unterstützen, darunter Podman, Buildah und Skopeo.

Dass Container so „schlank" und damit leicht portierbar sind, beruht darauf, dass sie den Betriebssystem-Kernel des Host-Computers gemeinsam nutzen. Dadurch entfällt die Notwendigkeit eines separaten Betriebssystems für jeden Container, und die Anwendung kann auf verschiedenen Infrastrukturen (Bare Metal, Cloud) ausgeführt werden – auch innerhalb von virtuellen Maschinen (VMs), wie wir im nächsten Abschnitt sehen werden. 

So können Entwicklungsteams bei der Arbeit mit Containern in mehreren Hostumgebungen dieselben Tools verwenden, wodurch Entwicklung und Deployment containerisierter Apps für die verschiedenen Betriebssysteme erheblich vereinfacht werden.

Eine virtuelle Maschine (VM) ist eine Umgebung, die als virtuelles Computersystem mit CPU, Speicher, Netzwerkschnittstelle und Storage fungiert und auf einem physischen Hardwaresystem (On- oder Off-Premise) erstellt wurde.

Containerisierung und Virtualisierung sind insofern vergleichbar, als sie beide die vollständige Isolierung von Anwendungen ermöglichen, sodass diese in mehreren Umgebungen betrieben werden können. Die Hauptunterschiede liegen in ihrer Größe und ihrer Portierbarkeit. 

VMs sind größer als Container. Sie werden in der Regel in Gigabyte gemessen und enthalten ein eigenes Betriebssystem, mit dem sie mehrere ressourcenintensive Funktionen gleichzeitig ausführen können. Dank der zahlreichen, ihnen zur Verfügung stehenden Ressourcen können VMs ganze Server, Betriebssysteme, Desktops, Datenbanken und Netzwerke abstrahieren, aufteilen, duplizieren und emulieren.

Container sind viel kleiner. Sie werden in der Regel in Megabyte gemessen und paketieren nicht mehr als eine App und ihre Betriebsumgebung. 

Während VMs gut mit herkömmlicher monolithischer IT-Architektur zusammenarbeiten, wurden Container für neuere Technologien wie Clouds, CI/CD und DevOps kompatibel gemacht. 

Container werden häufig verwendet, um einzelne Funktionen zu paketieren, die bestimmte Aufgaben ausführen. Diese werden als Microservice bezeichnet. Microservices entstehen durch Aufteilung der Teile einer Anwendung in kleinere, spezialisierte Services. Auf diese Weise können sich Entwickler auf die Arbeit an einem bestimmten Bereich einer Anwendung konzentrieren, ohne dass die Gesamtleistung der App beeinträchtigt wird. 

Dies bedeutet, dass die Apps aktiv bleiben, während Updates vorgenommen oder Probleme behoben werden, was schnellere Verbesserungen, Tests und Deployments ermöglicht. 

Microservices und Container funktionieren gut zusammen, da ein Microservice innerhalb eines Containers die gesamte Portierbarkeit, Kompatibilität und Skalierbarkeit eines Containers aufweist. 

Wie werden nun all diese Container verwaltet? Hier kommt die Container-Orchestrierung ins Spiel. Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert. 

Kubernetes ist eine Open Source-Plattform zur Container-Orchestrierung, mit der verteilte, containerisierte Anwendungen in riesigem Umfang verwaltet werden können. Sie teilen Kubernetes mit, wo Ihre Software ausgeführt werden soll, und die Plattform kümmert sich um fast alles, was für das Deployment und Management Ihrer Container erforderlich ist.

Kubernetes wurde ursprünglich von Ingenieuren bei Google entwickelt und konzipiert – einem Unternehmen, das schon früh zur Linux-Container-Technologie beigetragen hat –, bevor es 2015 zur freien Nutzung an die Cloud Native Computing Foundation (CNCF) weitergegeben wurde. Das heißt, dass die CNCF die Kubernetes-Community betreut und bewertet, während freiwillige Mitarbeitende und Administratoren für die Entwicklung, Wartung und Releases von Kubernetes verantwortlich sind.

Red Hat war bei der Entwicklung von Kubernetes einer der ersten Partner von Google und ist mittlerweile der zweitgrößte Unterstützer des Kubernetes-Projekts.

Red Hat OpenShift ist eine Kubernetes-Plattform für Unternehmen. Es handelt sich um ein Softwareprodukt, das Komponenten des Kubernetes-Projekts für Container-Management enthält und zusätzliche Produktivitäts- und Sicherheitsfunktionen bietet, die für große Unternehmen wichtig sind.

„OpenShift" bezieht sich auf die Downstream-Technologie der Container-Orchestrierung, die sich aus dem Open Source-Projekt OKD (früher als OpenShift Origin bekannt) entwickelte. „Red Hat OpenShift" bezieht sich auf die Suite der Container-Orchestrierungsprodukte von Red Hat. Red Hat paketiert neben OpenShift eine Reihe vorkonfigurierter Komponenten in verschiedene Produkte, darunter:

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures