Close

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.

Porträtfoto: Ian Buchanan
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.

Ein Container, der die Unterschiede zwischen Virtual Machines und Containern zeigt

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


Symbol: Codeerstellung
Zugehöriges Material

Kubernetes und Docker im Vergleich

Symbol: drei Ringe
Lösung anzeigen

Verwalte deine Komponenten 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.

Ian Buchanan
Ian Buchanan

Ian verfügt über umfassende Erfahrung mit Java und .NET. Sein Spezialgebiet sind jedoch Agile-Methoden für Großunternehmen. Derzeit liegt sein Schwerpunkt auf der neuen DevOps-Kultur und auf Tools zur Optimierung von Continuous Integration, Continuous Delivery und Datenanalyse. In seiner Laufbahn hat Ian bereits verschiedene Tools zur Entwicklung von Unternehmenssoftware in allen Lebenszyklusphasen betreut. Durch unternehmensweite Prozessoptimierungen hat er die Produktivität, die Qualität und die Kundenzufriedenheit gesteigert. Er hat multinationale Teams zusammengestellt, die sich weitgehend selbst leiten und organisieren. Wenn er gerade keine Vorträge hält oder programmiert, befasst sich Ian mit Parsern, Metaprogrammierung und domänenspezifischen Sprachen. Du kannst Ian unter @devpartisan folgen.


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.

Abbildung: DevOps

Compass-Community

Illustration: Überwindung von Hindernissen

Tutorial: Erstellen einer Komponente

Abbildung: Karte

Erste Schritte mit Compass (kostenlos)

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up