Jump to section

Container im Vergleich zu VMs

URL kopieren

Red Hat ausgezeichnet als Leader im 2023 Gartner® Magic Quadrant™

Red Hat wurde im Gartner 2023 Magic Quadrant für Container Management hinsichtlich der Ausführungsfähigkeit und der umfassenden Vision bestplatziert.

Container und virtuelle Maschinen (VMs) sind 2 Ansätze zur Paketierung von Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren. Der Hauptunterschied zwischen den beiden Ansätzen liegt darin, welche Komponenten isoliert werden, was wiederum den Umfang und die Portierbarkeit eines Ansatzes beeinflusst.

 

Ein Container ist eine Softwareeinheit, welche die zur Ausführung benötigten Komponenten und Funktionen einer Anwendung enthält. Die meisten modernen Anwendungen bestehen aus mehreren Containern, die jeweils eine spezifische Funktion erfüllen. Container werden normalerweise in Megabyte gemessen, verwenden keinen Hypervisor und gelten allgemein als eine schnellere, agilere Methode zur Isolation von Prozessen.

Einer der signifikanten Faktoren, der zum Erfolg von Containern beiträgt, ist die Portierbarkeit. Einzelne Container können ähnlich wie LEGO™-Steine einfach ausgetauscht und in verschiedene Umgebungen verschoben werden. Sobald eine Anwendung und ihre zugehörigen Abhängigkeiten in einen Container paketiert wurden, funktioniert diese in verschiedenen Umgebungen auf dieselbe Weise und kann an beliebigen Orten eingesetzt werden. Dabei spielt es keine Rolle, ob dies der Entwicklerlaptop, ein Rechenzentrum, die Cloud oder der Edge ist.

Docker, eine Open Source-Plattform zum Entwickeln, Bereitstellen und Verwalten von containerisierten Anwendungen, hat über die Jahre eine große Rolle in der Evolution der Containertechnologie gespielt. 

Virtuelle Maschinen spielen eine wichtige Rolle im Cloud Computing und emulieren physische Computer, indem sie Betriebssysteme in isolierten Instanzen ausführen. Mehrere VMs werden normalerweise auf einem einzigen Server gehostet, wobei ein Hypervisor als schlanke Softwareschicht zwischen dem physischen Host und den VMs agiert. Dieser Hypervisor verwaltet effizient den Zugriff auf die Ressourcen, ermöglicht es den virtuellen Maschinen, als eigenständige Server zu funktionieren und bietet gleichzeitig erhöhte Flexibilität und Agilität.

Nachdem sie in den 2000er-Jahren zunächst aufgrund von Konsolidierungs- und Kosteneinsparungsmaßnahmen beliebt geworden waren, hat sich die Verwendung von VMs im Laufe der Zeit verändert. Die VM-Bereitstellungen von Unternehmen sind gereift und sind nun nicht mehr nur auf die Konsolidierung beschränkt, sondern werden für verschiedene Use Cases eingesetzt. Dazu zählen die Bereitstellung von On-Demand-Ressourcen für Anwendungen und die Optimierung des Zugriffs auf teure Ressourcen wie etwa GPUs.

VMs waren außerdem die Basis vieler früher Cloud Computing-Umgebungen und haben die Ressourcen-Virtualisierung ermöglicht sowie Mandantenfähigkeit und Isolation unterstützt, wodurch mehrere Kunden Systeme ausführen konnten, welche dieselben Ressourcen verwendet haben.

Virtuelle Maschinen verfügen über ein eigenes Betriebssystem, auf dem sie mehrere ressourcenintensive Funktionen auf einmal ausführen können. Dank der zahlreichen verfügbaren Ressourcen können VMs ganze Server, Betriebssysteme, Desktops, Datenbanken und Netzwerke abstrahieren, aufteilen, duplizieren und emulieren. 

Neben den technologischen Unterschieden steht der Vergleich von Containern mit virtuellen Maschinen stellvertretend für den Vergleich zwischen modernen cloudnativen IT-Praktiken und traditionellen IT-Architekturen. 

Neue IT-Praktiken 
(cloudnative EntwicklungCI/CD und DevOps) sind möglich, weil die Workloads in möglichst kleine wartungsfähige Einheiten aufgeteilt werden – normalerweise in eine einzelne Funktion oder einen Microservice – und in Isolation ausgeführt sowie unabhängig entwickelt, bereitgestellt, gemanagt und skaliert werden können.

Diese kleinen Einheiten werden am besten in Container paketiert, wodurch mehrere Teams an einzelnen Teilen einer App oder eines Services arbeiten können, ohne dabei Code zu unterbrechen oder zu gefährden, der in anderen Containern paketiert wurde.

Bei traditionellen IT-Architekturen
(monolithischen und Legacy-Architekturen) sind die verschiedenen Aspekte eines Workloads eng zusammengefasst und können ohne die tragende Architektur nicht funktionieren. Da Aspekte nicht voneinander getrennt werden können, müssen diese als eine gesamte Einheit innerhalb einer größeren Umgebung, oftmals einer VM, paketiert werden.

Früher war es üblich, eine komplette App innerhalb einer VM zu erstellen und auszuführen. Der gesamte Code und die Abhängigkeiten führten jedoch zu übergroßen VMs, und beim Durchführen von Updates traten Kaskadierungsfehler und Ausfallzeiten auf.

 

virtualization vs containers

Virtualisierung

Eine Software namens Hypervisor trennt die Ressourcen von ihren physischen Maschinen, sodass diese partitioniert und für VMs dediziert werden können. Wenn Nutzende eine VM-Anweisung geben, die zusätzliche Ressourcen von der physischen Umgebung benötigt, gibt der Hypervisor diese Anfrage an das physische System weiter und nimmt die Änderungen im Cache auf. VMs sehen wie physische Server aus und verhalten sich auch so, was die Nachteile von Anwendungsabhängigkeiten und großen Betriebssystem-Footprints verschlimmern kann, da dieser Footprint meist nicht benötigt wird, um eine einzelne App oder einen Microservice auszuführen.

Container

Elemente innerhalb eines Containers werden paketiert und mithilfe eines Container Images versendet. Bei diesem Image handelt es sich um eine Datei, die die benötigten Libraries und Abhängigkeiten enthält. Die Container Image-Dateien ähneln Software-Installations-Paketen (wie etwa RPMs in Linux), aber benötigen nur einen kompatiblen Kernel und eine Container Runtime zum Ausführen der Anwendung. Es spielt weder eine Rolle, welches Betriebssystem verwendet wurde, um den Container zu erstellen, noch, woher die Libraries im Container stammen. Da Container so klein sind, werden normalerweise Hunderte von ihnen lose verbunden und mithilfe von Container-Orchestrierungs-Plattformen (wie Red Hat OpenShift und Kubernetes) provisioniert und verwaltet.

Das hängt davon ab, ob Sie eine kleine Instanz von etwas benötigen, das sich leicht verschieben lässt (Container) oder doch eher eine halb-permanente Zuweisung von benutzerdefinierten IT-Ressourcen.

Zusätzlich sollten Sie Faktoren wie Anwendungsarchitektur, Entwicklungspraktiken sowie gesetzliche und Sicherheitsanforderungen bedenken.

Aufgrund ihrer geringen Größe können Container problemlos in Bare Metal-Systemen sowie Public-, Private-, Hybrid- und Multi-Cloud-Umgebungen bereitgestellt werden. Container werden auch häufig in VMs ausgeführt, da Unternehmen bereits eine bestehende Infrastruktur haben, die auf virtuellen Maschinen aufbaut. All das zeigt die Flexibilität von Containern. 

Sie sind auch die ideale Umgebung für die Bereitstellung der cloudnativen Apps von heute, die aus mehreren Microservices bestehen und mit denen die konsistente Entwicklung und automatisierte Verwaltung von Public-, Private, Hybrid- und Multi-Cloud-Umgebungen überhaupt erst möglich wird. Cloudnative Apps tragen dazu bei, die Erstellung neuer Apps, die Optimierung bestehender Apps und die Verknüpfung von Apps zu beschleunigen. 

Im Vergleich zu VMs eignen sich Container besser für: 

  • Cloudnative App-Entwicklung
  • Paketieren von Microservices
  • Einbinden von Anwendungen in DevOps- oder CI/CD-Praktiken
  • Verschieben skalierbarer IT-Projekte in einem diversen IT-Footprint 

Im Vergleich zu Containern eignen sich VMs besser für:

  • Unterbringen traditioneller, monolithischer und Legacy-Workloads
  • Isolation riskanter Entwicklungszyklen
  • Provisionieren von Infrastrukturressourcen, (wie Netzwerke, Server und Daten)
  • Ausführen eines Betriebssystems in einem anderen (beispielsweise Unix auf Linux)

 

Wenn Sie Anwendungen haben, die sowohl auf virtuellen Maschinen als auch auf Containern ausgeführt werden, kann Ihnen Red Hat Service Interconnect dabei helfen, Anwendungen und Services in verschiedenen Umgebungen zu verbinden.

Virtuelle Maschinen und Container können auf verschiedenen Arten von Infrastruktur — darunter auch Bare Metal-Server — bereitgestellt werden.

Was ist Bare Metal?

Der Begriff „Bare Metal“ beschreibt einen Computer oder Server, der auf physischer Hardware ausgeführt wird und zum Betrieb keine Unterstützung durch Hypervisoren, virtuelle Maschinen oder Containerisierung benötigt. Bare Metal-Server sind auch als dedizierte Server bekannt, da die Hardware-Komponenten nicht mit anderen Nutzerinnen und Nutzern geteilt werden und so völlig für einen Mandanten dediziert sind.

Bare Metal-Server sind schnell, leistungsstark und können eine hohe Datenmenge mit geringen Latenzzeiten verarbeiten. Bei Bare Metal haben Nutzende völlige Kontrolle über ihre Server-Infrastruktur, weshalb sie ihr eigenes Betriebssystem auswählen und ihre Hardware und Software auf die Anforderungen ihrer Workloads feinabstimmen können.

Bare Metal-Deployments eignen sich sehr gut für Szenarien, in denen Performance und direkter Hardware-Zugang wichtig sind, bieten aber womöglich nicht denselben Grad an Flexibilität und Ressourcenmanagement wie Container oder virtuelle Maschinen.

Kann ich VMs auf Bare Metal hosten?

Ja, Bare Metal-Server können virtuelle Maschinen zusammen mit einem Hypervisor und Virtualisierungssoftware hosten.

Kann ich Container auf Bare Metal hosten?

Ja, Plattformen wie Docker, Kubernetes, und Podman wurden dazu entwickelt, Nutzenden dabei zu helfen, Container in großem Umfang auf vielen Umgebungen zu verwalten und bereitzustellen. Dazu zählen auch Bare Metal-Server. 

Red Hat® OpenShift® ist eine einzelne unternehmensgerechte containerbasierte Anwendungsplattform mit verschiedenen Deployment- und Nutzungsoptionen, die eine Vielzahl von Anwendungen und Umgebungen unterstützt. Red Hat OpenShift unterstützt Unternehmen beim sicheren Entwickeln, Bereitstellen, Ausführen und Verwalten von Anwendungen in großem Umfang an verschiedenen Standorten. 

Red Hat OpenShift® Virtualization, eine Funktion von Red Hat OpenShift, ermöglicht es IT-Teams, virtuelle Maschinen neben Containern auf derselben Kubernetes-Plattform zu betreiben und vereinfacht so die Verwaltung und verkürzt die Zeit bis zur Produktion.  

So können Unternehmen von ihren bereits getätigten Virtualisierungsinvestitionen profitieren und gleichzeitig die Vorteile der einfachen und schnellen Nutzung einer modernen Anwendungsplattform nutzen. Durch die Integration von VMs in die Anwendungsplattform von OpenShift entsteht eine einheitliche Umgebung für die Anwendungsentwicklung und -bereitstellung. Entwicklungsteams können Anwendungen schneller entwickeln, testen und bereitstellen und so die Markteinführung beschleunigen.

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