Container vs. virtuelle Computer
Erfahre mehr über die Unterschiede zwischen Containern und virtuellen Computern (Virtual Machines, VMs), die jeweils beliebtesten Anbieter dafür und wie sie zusammen verwendet werden können.
Ian Buchanan
Principal Solutions Engineer
Container und virtuelle Computer sind Technologien zur Ressourcenvirtualisierung, die sich stark ähneln. Virtualisierung ist ein Prozess, bei dem eine Systemressource wie RAM, CPU, Festplatte oder Netzwerk virtuell dargestellt und als mehrere Ressourcen abgebildet wird. Das Hauptunterscheidungsmerkmal zwischen Containern und virtuellen Computern besteht darin, dass virtuelle Computer den gesamten Rechner bis hinunter zu den Hardwareschichten virtualisieren, während bei Containern die Virtualisierung lediglich für die Softwareschichten über der Betriebssystemebene stattfindet.
Teste Compass kostenlos
Als Unterstützung beim Entwickeln, zum Katalogisieren von Diensten und zum Optimieren des Softwarezustands.
Was ist ein Container?
Container sind kompakte Softwarepakete, die alle Abhängigkeiten beinhalten, die zur Ausführung der enthaltenen Softwareanwendung erforderlich sind. Diese Abhängigkeiten umfassen Elemente wie Systembibliotheken, externe Codepakete von Drittanbietern und andere Anwendungen auf Betriebssystemebene. Die in einem Container enthaltenen Abhängigkeiten bestehen in Stack-Ebenen, die dem Betriebssystem übergeordnet sind.
Vorteile
- Iterationsgeschwindigkeit
Da Container leichtgewichtig sind und nur Software auf hoher Ebene enthalten, können sie sehr schnell geändert und iteriert werden. - Robustes Ökosystem
Die meisten Container-Laufzeitsysteme bieten ein gehostetes öffentliches Repository mit vorgefertigten Containern. Diese Container-Repositorys enthalten viele gängige Softwareanwendungen wie Datenbanken oder Messaging-Systeme und können sofort heruntergeladen und ausgeführt werden, wodurch Entwicklerteams Zeit sparen.
Nachteile
- Geteilte Host-Exploits
Container haben alle das gleiche zugrunde liegende Hardwaresystem unterhalb der Betriebssystemschicht. Es ist möglich, dass ein Exploit in einem Container aus dem Container ausbricht und die gemeinsam genutzte Hardware beeinträchtigt. Die beliebtesten Container-Laufzeiten verfügen über öffentliche Repositorys mit vorgefertigten Containern. Es besteht ein Sicherheitsrisiko bei der Verwendung eines dieser öffentlichen Images, da sie möglicherweise Exploits enthalten oder anfällig für Angriffe sind.
Beliebte Container-Anbieter
Zugehöriges Material
Kubernetes und Docker im Vergleich
Lösung anzeigen
Verbesserte Entwicklung mit Compass
- Docker
Docker ist die beliebteste und am weitesten verbreitete Container-Laufzeit. Docker Hub ist ein riesiges öffentliches Repository für beliebte containerisierte Softwareanwendungen. Container auf Docker Hub können sofort heruntergeladen und für eine lokale Docker-Laufzeit bereitgestellt werden. - rkt
rkt (ausgesprochen "Rocket") ist ein auf Sicherheit ausgerichtetes Container-System. rkt-Container erlauben keine unsicheren Container-Funktionen, es sei denn, ein Benutzer deaktiviert Sicherheitsfunktionen explizit. rkt-Container zielen darauf ab, die zugrunde liegenden Sicherheitsprobleme anderer Container-Laufzeitsysteme (Risiko der Exploit-Kreuzkontamination) anzugehen. - Linux Containers (LXC)
Das Linux Containers-Projekt ist ein Open-Source-Linux-Container-Laufzeitsystem. LXC wird verwendet, um Prozesse auf Betriebssystemebene voneinander zu isolieren. Docker verwendet übrigens LXC hinter den Kulissen. Linux-Container zielen darauf ab, eine anbieterneutrale Open-Source-Container-Laufzeit anzubieten. - CRI-O
CRI-O ist eine Implementierung von Kubernetes Container Runtime Interface (CRI), das die Verwendung von mit Open Container Initiative (OCI) kompatiblen Laufzeiten ermöglicht. Es ist eine kompakte Alternative zur Verwendung von Docker als Laufzeit für Kubernetes.
Was ist ein virtueller Computer (Virtual Machine, VM)?
Virtuelle Computer sind umfangreiche Softwarepakete, die eine vollständige Emulation von Hardwaregeräten auf niedriger Ebene wie CPU, Festplatten und Netzwerkgeräten ermöglichen. Virtuelle Computer können auch einen ergänzenden Software-Stack enthalten, der auf der emulierten Hardware ausgeführt wird. Diese Hardware- und Softwarepakete ergeben zusammen einen voll funktionsfähigen Snapshot eines Computersystems.
Vorteile
- Vollständige Isolationssicherheit
Virtuelle Computer laufen isoliert als komplett eigenständiges System. Dies bedeutet, dass virtuelle Computer immun gegen Exploits oder Interferenzen durch andere virtuelle Computer auf einem gemeinsam genutzten Host sind. Ein einzelner virtueller Computer kann immer noch Opfer eines Exploits werden, bleibt dabei jedoch isoliert und kann somit keine benachbarten virtuellen Computer kontaminieren. - Interaktives Deployment
Container sind in der Regel statische Definitionen der erwarteten Abhängigkeiten und Konfigurationen, die zum Ausführen des Containers erforderlich sind. Virtuelle Computer sind dynamischer und können interaktiv entwickelt werden. Sobald die grundlegende Hardwaredefinition für einen virtuellen Computer festgelegt wurde, kann er wie ein Bare-Bones-Computer behandelt werden. Software kann manuell auf dem virtuellen Computer installiert werden. Außerdem kann ein Snapshot des virtuellen Computers erstellt werden, um den aktuellen Konfigurationsstatus zu erfassen. Die Snapshots des virtuellen Computers können verwendet werden, um den virtuellen Computer auf diesen Zeitpunkt wiederherzustellen. Es ist damit auch möglich, zusätzliche virtuelle Computer mit dieser Konfiguration einzurichten und zu nutzen.
Nachteile
- Iterationsgeschwindigkeit
Virtuelle Computer sind zeitaufwendig zu erstellen und zu regenerieren, da sie den vollständigen Stack eines Systems umfassen. Bei allen Änderungen an einem Snapshot des virtuellen Computers können die Neugenerierung und die Validierung des erwarteten Verhaltens viel Zeit in Anspruch nehmen. - Kosten für Speichergröße
Virtuelle Computer beanspruchen unter Umständen viel Speicherplatz. Sie können schnell mehrere Gigabyte groß werden. Dies kann zu Problemen mit dem Speicherplatz des Host-Computers der virtuellen Computer führen.
Beliebte Anbieter von virtuellen Computern
- VirtualBox
VirtualBox ist ein kostenloses Open-Source-System von Oracle zur Emulation einer x86-Architektur. VirtualBox ist eine der beliebtesten und etabliertesten Plattformen für virtuelle Computer mit einem Ökosystem ergänzender Tools zur Unterstützung bei der Entwicklung und Verteilung von Images virtueller Computer. - VMware
VMware ist ein börsennotiertes Unternehmen, das sein Geschäft auf einer der ersten x86-Hardware-Virtualisierungstechnologien aufgebaut hat. VMware wird in einem Hypervisor geliefert, bei dem es sich um ein Dienstprogramm handelt, das mehrere virtuelle Computer bereitstellt und verwaltet. VMware verfügt über eine robuste Benutzeroberfläche für die Verwaltung virtueller Computer. Die Lösung eignet sich gut als VM-Option für Unternehmen, da Support angeboten wird. - QEMU
QEMU ist die robusteste VM-Option für Hardware-Emulation. Es unterstützt jede generische Hardwarearchitektur. QEMU ist ein Dienstprogramm, das ausschließlich über eine Befehlszeile bedient wird und keine grafische Benutzeroberfläche für die Konfiguration oder Ausführung bietet. Dieser Kompromiss macht QEMU zu einer der schnellsten VM-Optionen.
Welche Option ist besser für dich?
Wenn du bestimmte Hardwareanforderungen für dein Projekt hast oder auf einer bestimmten Hardwareplattform entwickelst, aber auf eine andere abzielst (beispielsweise Windows vs. macOS), musst du einen virtuellen Computer einsetzen. Die meisten anderen reinen Softwareanforderungen können durch die Verwendung von Containern erfüllt werden.
Wie lassen sich Container und virtuelle Computer zusammen verwenden?
Es ist durchaus möglich, Container und virtuelle Computer zusammen zu verwenden, auch wenn die praktischen Anwendungsfälle eher begrenzt sind. Du kannst einen virtuellen Computer erstellen, der eine spezielle Hardwarekonfiguration emuliert. Auf der Hardware dieses virtuellen Computers kann dann ein Betriebssystem installiert werden. Sobald der virtuelle Computer funktionsfähig ist und das Betriebssystem bootet, kann eine Container-Laufzeit auf dem Betriebssystem installiert werden. So entsteht ein funktionsfähiges Computersystem mit emulierter Hardware, auf der Container installiert werden können.
Praktischen Nutzen hat diese Konfiguration beispielsweise für das Experimentieren mit System-on-Chip-Deployments. Gängige System-on-Chip-Computer wie ein Raspberry Pi oder BeagleBone Entwicklungs-Boards können als virtueller Computer emuliert werden, um mit Containern zu experimentieren, bevor auf der eigentlichen Hardware getestet wird.
In den meisten Fällen werden deine Bedürfnisse jedoch wahrscheinlich von einer der beiden Lösungen abgedeckt. Bei der Entscheidung zwischen Containern und virtuellen Computern für deine Virtualisierungsanforderungen solltest du vor allem deine Ressourcenanforderungen kennen und wissen, zu welchen Kompromissen du bereit bist.
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.