Design wechseln

Docker vs. virtuelle Maschine: Performance-Unterschiede und Szenario-Auswahl in 5 Minuten

Easton editorial illustration: deployment checkpoint lane

Auf dem Team-Meeting fragte der Chef: „Sollen wir für das neue Projekt Docker oder virtuelle Maschinen nutzen?“ Beides habe ich schon verwendet – aber den Unterschied klar zu erklären, fiel mir schwer. Am Arbeitsplatz habe ich recherchiert und festgestellt: Die meisten Artikel sind entweder zu theoretisch oder enden bei „Docker ist leichter“ – ohne zu erklären, wo genau der Unterschied liegt, wie groß die Performance-Lücke ist und welches Szenario wofür passt.

Drei Tage später hatte ich es verstanden. Heute erkläre ich Ihnen den Unterschied zwischen Docker und virtuellen Maschinen so einfach wie möglich. Danach wissen Sie: der grundlegende Unterschied (mit einer anschaulichen Metapher), wie groß die Performance-Differenz wirklich ist (mit echten Daten) und ein Entscheidungsbaum für die richtige Technologiewahl.

3 s
Docker-Start
vs. VM 4 min
800+
Container-Dichte
32 Kerne/128 GB Server
unter 5 %
Performance-Overhead
Docker vs. 10–20 %
Source: Gemessene Daten

Der grundlegende Unterschied – Container vs. eigenständiges Zimmer

Zuerst die anschaulichste Metapher.

Eine virtuelle Maschine ist wie eine eigenständige Wohnung in einem Gebäude. Jede Wohnung hat eigene Küche, Bad und Versorgung – ein vollständiges Lebenseinheit. Sie wohnen im 2. Stock, der Nachbar im 3. – völlig getrennt. Jede VM führt ein vollständiges Betriebssystem aus (Windows, Linux usw.) mit eigenem Kernel, Treibern und Systemdiensten – von Kopf bis Fuß komplett.

Ein Docker-Container ist wie ein Container am Hafen. Alle Container teilen die Infrastruktur des Terminals – Kräne, Strom, Straßen. Im Container steckt nur die Anwendung und ihre Abhängigkeiten, nicht jedes Mal eine eigene Infrastruktur. Docker-Container teilen den OS-Kernel des Hosts und packen nur Anwendung und Laufzeitumgebung.

Der Unterschied wirkt klein, betrifft aber alles.

Architektonisch trägt die VM zwei zusätzliche „Lasten“: Guest OS (Gastbetriebssystem) und Hypervisor (Virtualisierungsschicht). Der Hypervisor simuliert die gesamte Hardware – CPU, Speicher, Festplatte, Netzwerk. Beim Start muss zuerst das vollständige OS hochfahren: Kernel laden, Dienste initialisieren – wie ein Computer-Neustart.

Docker? Läuft direkt auf dem Host-Kernel. Container starten = Prozess starten, in Sekunden. Kein Hardware-Virtualisierungs-Overhead, keine zusätzliche OS-Schicht – extrem leichtgewichtig.

Sie fragen sich vielleicht: Ist ein geteilter Kernel problematisch? Später zeige ich, dass das genau Dockers Schwachstelle ist – schwächere Isolation als bei VMs. Aber auch sein Vorteil: schnell, leicht, ressourcenschonend.

Verstanden Sie diesen Unterschied, ergibt sich der Rest – Performance, Einsatzszenarien – von selbst.

Performance-Duell – die Zahlen sprechen

Theorie allein reicht nicht – schauen wir auf Daten.

Startgeschwindigkeit: Sekunden vs. Minuten

Letzte Woche habe ich getestet: Eine konfigurierte VM (2 Kerne, 4 GB) brauchte vom Einschalten bis zum SSH-Login fast 4 Minuten. Zeit für Kaffee und Social Media.

Derselbe Redis-Service mit Docker? 3 Sekunden.

Bevor ich die Maus losgelassen hatte, lief er schon.

Das ist kein Zufall. VMs müssen ein vollständiges OS laden – Kernel-Init, Systemdienste, Netzwerk. Docker startet einen Prozess; der Kernel läuft bereits, also sofort loslegen.

Ressourcenverbrauch: MB vs. GB

Noch deutlicher der Ressourcenverbrauch. Dockers eigener Overhead? 6–8 MB RAM. Ja, einstellige MB.

Mein Redis-Container: CPU 0,08 %, RAM 2,6 MB. Kaum spürbar.

Bei VMs? Selbst ohne laufende Anwendung frisst das OS 1–2 GB RAM. MySQL-VM? Mindestens 4 GB.

Die Folge: Auf demselben Server schaffen VMs höchstens einige Dutzend Instanzen, Docker Tausende. In einer echten Produktionsumgebung liefen auf einem 32-Kern/128-GB-Server über 800 Docker-Container – ohne Probleme. Mit VMs? 30 sind schon an der Grenze.

800+
Container-Anzahl
Source: Gemessen auf 32-Kern/128-GB-Server

Performance-Overhead: nahezu nativ vs. spürbar langsamer

Vergleichstests zeigen: Docker-Container liefern in fast allen Szenarien native Performance – teils sogar schneller (kein Virtualisierungs-Overhead). VMs? Typisch 10–20 % Verlust.

Besonders bei CPU-intensiven Tasks. Beim Kompilieren eines großen Projekts: VM 25 Minuten, Container 21 Minuten, physischer Server 20 Minuten. Container fast ohne Verlust.

Zur Übersicht eine Tabelle:

DimensionDocker-ContainerVirtuelle Maschine (VMware/VirtualBox)
StartzeitSekunden (1–5 s)Minuten (2–5 min)
SpeicherverbrauchMB (2–50 MB)GB (1–4 GB Minimum)
Dichte pro ServerHunderte bis TausendeDutzende
Performance-Overheadunter 5 %10–20 %
Image-GrößeDutzende bis Hunderte MBmehrere GB bis Dutzende GB

Nach dieser Tabelle versteht man, warum Microservices auf Docker umsteigen. Die Ressourcenauslastung kann um Größenordnungen differieren.

Isolation und Sicherheit – stärker ist nicht immer besser

Nach den Performance-Vorteilen Dockers Schwachstelle.

Unterschiedliche Isolationsstufen

VMs isolieren auf Hardware-Ebene. Jede VM hat einen eigenen OS-Kernel – wie zwei völlig getrennte Computer. Wird VM A kompromittiert, kann ein Angreifer theoretisch nicht zu VM B oder zum Host springen. Das nennt man „harte Isolation“.

Docker? Prozess-Isolation. Alle Container teilen den Host-Kernel, getrennt durch Linux-Namespaces und cgroups. Klingt weniger sicher – ist es auch.

Container Escape zielt genau darauf ab: Findet ein Angreifer eine Schwachstelle, kann er die Isolation durchbrechen und den Host angreifen. CVE-2024-21626 ermöglichte genau das.

Bei VMs gibt es das Risiko auch – aber deutlich schwerer auszunutzen.

Wann sind VMs zwingend?

Docker ist nicht unsicher – es hängt von Ihren Isolationsanforderungen ab.

Cloud-Anbieter mit Mandantentrennung: VMs. AWS, Alibaba Cloud – unter der Haube VMs für Tenant-Isolation. Kunden A und B teilen keinen Kernel.

Finanzunternehmen mit Compliance (z. B. Level-3-Schutz): Auditoren akzeptieren geteilte Kernel oft nicht – VMs sind Pflicht.

Nicht vertrauenswürdiger Code, z. B. Online-Compiler: Docker zu riskant, VM nötig.

Docker absichern

In den meisten Szenarien reicht Docker. Interne Microservices mit eigenem Code – völlig ausreichend, wenn Sie Folgendes beachten:

  1. Container nicht als root ausführen. Standard ist root – bei Kompromittierung hoher Schaden. Nicht-privilegierte User nutzen.
  2. Berechtigungen einschränken (Capabilities). Keine unnötigen Systemrechte vergeben.
  3. Images regelmäßig scannen. Mit Trivy Schwachstellen finden und Basis-Images aktualisieren.

Unser Team nutzt diese drei Maßnahmen seit zwei Jahren – ohne Sicherheitsvorfälle.

Kurz: Isolation hängt vom Bedrohungsmodell ab. Interne Apps → Docker. Externe Multi-Tenant-Szenarien → VM.

Einsatzszenarien – der Entscheidungsbaum

Wann welche Technologie? Ein klarer Entscheidungsprozess.

4 Szenarien für Docker

1. Microservices-Architektur

Microservices? Docker, ohne Zögern.

Microservices zerlegen eine große Anwendung in viele kleine Services – jeder separat deploybar. Mit VMs: User-Service = 1 VM, Order-Service = 1 VM, Payment = 1 VM … die Ressourcen reichen nicht.

Docker passt perfekt: leicht, schneller Start, hohe Dichte. User-, Order- und Payment-Service je ein Container – isoliert, horizontal skalierbar.

Ein Projekt mit 30+ Microservices, containerisiert auf 5 Servern. Mit VMs wären die Serverkosten dreimal so hoch.

2. DevOps und CI/CD

Uneinheitliche Dev/Test/Prod-Umgebungen – der Albtraum jedes Entwicklers. „Bei mir läuft es“ kennen Sie.

Docker löst das: Anwendung und Abhängigkeiten ins Image – überall identisch.

CI/CD: Jenkins braucht eine saubere Umgebung pro Build. Docker-Container starten, Tests laufen, Container weg – 20 Sekunden. VM? 5 Minuten Start plus manuelles Aufräumen.

3. Schnelles Deployment und elastische Skalierung

23 Uhr, Traffic-Spitze – 10 Instanzen sofort nötig.

Docker: Sekunden, 10 Container laufen.
VM: 5 Minuten pro Instanz, 10 = 50 Minuten. Nutzer sind längst weg.

Dockers Stärke: elastische Skalierung. Kubernetes skaliert Container automatisch – nahezu unsichtbar. VMs schaffen das nicht in dieser Geschwindigkeit.

4. Einheitliche Entwicklungsumgebung

5 Entwickler: macOS, Windows, Ubuntu. Unterschiedliche MySQL- und Node-Versionen – ständig „Läuft es bei dir?“

Ein Docker-Umgebungs-Image, alle führen docker-compose up aus – MySQL, Redis, Nginx, Versionen fixiert. Keine Umgebungsprobleme mehr.

4 Szenarien für VMs

1. Traditionelle Monolith-Anwendungen

10 Jahre altes ERP: Java 6 + Oracle auf CentOS 6. Hunderttausende Zeilen Code – unveränderbar.

Nicht mit Docker experimentieren. VM, Stabilität zuerst. Containerisierung zu teuer und riskant.

2. Mehrere Betriebssysteme

Windows- und Linux-Anwendungen parallel: .NET auf Windows Server, Java auf Linux.

Docker läuft primär mit Linux-Containern (Windows-Container schlecht unterstützt). VMs: eine Windows, eine Linux.

Entwickler auf dem Mac testen Windows-Software über VMware oder VirtualBox.

3. Starke Isolation

Cloud-Anbieter, Multi-Tenant-SaaS: Mandanten vollständig trennen. VM pro Kunde, eigener Kernel.

Finanz, Behörden: Compliance verlangt nachweisbare Isolation. Geteilter Kernel scheitert oft am Audit.

4. Vollständige OS-Umgebung simulieren

Embedded-Treiberentwicklung mit spezifischem Kernel. OS-nahe Entwicklung.

Docker teilt den Host-Kernel. VMs simulieren Hardware und Kernel vollständig.

Hybrid ist die Regel

Die meisten Unternehmen nutzen beides.

Bei uns:

  • Kern-Transaktionssystem (5 Jahre stabil): VM
  • Neue API-Gateway- und Microservices: Docker + Kubernetes
  • Dev/Test: alles Docker
  • Windows-Office-Tests: VMware

Stabilität für Kerngeschäft, Agilität für neue Services.

Entscheidungsbaum

Ist Ihre Anwendung neu entwickelt?
├─ Ja → Microservices-Architektur?
│   ├─ Ja → Docker ✅
│   └─ Nein → Häufige Updates/Deployments?
│       ├─ Ja → Docker ✅
│       └─ Nein → Nach weiteren Faktoren entscheiden
└─ Nein (Legacy) → Spezifisches OS/Kernel nötig?
    ├─ Ja → VM ✅
    └─ Nein → Starke Isolation nötig?
        ├─ Ja → VM ✅
        └─ Nein → Containerisierung möglich → Docker ✅

Diesen Ablauf einmal durchgehen – und Sie haben Ihre Antwort.

Praxisbeispiele – wie andere entscheiden

Theorie reicht nicht – echte Szenarien.

Fall 1: Startup setzt voll auf Docker

SaaS-Startup, 15 Personen, knappes Budget: 3 Alibaba-Cloud-ECS (4 Kerne/8 GB) für ein Dutzend Services.

Mit VMs: maximal 15 VMs auf 3 Maschinen. Stattdessen Docker + Kubernetes: 60+ Container, noch Reserve.

Dev-Umgebung vereinheitlicht. Neuer Mitarbeiter: Code clonen, docker-compose up, 5 Minuten fertig. Früher mit VMs: halber Tag Setup.

Kostenersparnis? Mit VMs 10 Server nötig – jetzt 3. Jährlich Zehntausende gespart.

Für Startups: echter Geldwert.

Fall 2: Schrittweise Modernisierung im Mittelstand

Fertigungsunternehmen: 15 Jahre SAP + Oracle auf IBM-VMs. Unantastbar.

Digitale Transformation: neues Supply-Chain-System. IT-Leitung: ERP unverändert, Neues in Docker-Microservices.

Aktuell:

  • Altes ERP: VM, 5 Server, stabil
  • Neues Supply-Chain: Docker + K8s, 3 Server, 70+ Container
  • Verbindung über API-Gateway

Stabilität fürs Kerngeschäft, Agilität für Neues – typisches „Bimodal IT“.

Fall 3: Sicherheitsisolation beim Cloud-Anbieter

Kleiner Hosting-Anbieter, jeder Kunde eigene Umgebung.

Erst Docker geplant – günstig. Technischer Leiter: Nein. Mandantentrennung zwingend; geteilter Kernel zu riskant.

KVM-VMs: ein VM pro Kunde, Kernel-Isolation. Höhere Kosten, aber sicher. Vertrag: „dedizierter virtueller Server“, kein Container.

Sicherheit vor Kosten.

Fall 4: Hybrid-Cloud Best Practice

Spieleunternehmen: Kern-Datenbank im eigenen Rechenzentrum (Datenschutz), Game-Server brauchen Elastizität (Event-Traffic).

Lösung:

  • On-Premise: MySQL-Master auf VM, Stabilität zuerst
  • Cloud: Game-Services containerisiert mit K8s, Auto-Scaling bei Peaks
  • Events: 10 auf 100 Container in 10 Minuten
  • Danach: zurück auf 20, Kosten sparen

Kern mit VM, Edge mit Docker – das Beste aus beiden Welten.

Kein absolutes Richtig oder Falsch – nur Passend oder Unpassend.

Fazit

Docker und VMs schließen sich nicht aus – jedes Tool hat seine Stärken.

Neues Projekt, schnelle Iteration, Umgebungskonsistenz → Docker. Schneller Start, wenig Ressourcen, ideal für Microservices und DevOps. Meine neuen Projekte starten fast immer mit Docker.

Legacy-Systeme, starke Isolation, mehrere Betriebssysteme → VM. Stabilität und Sicherheit, wenn nötig, ohne Zögern.

Die meisten Unternehmen mischen beides: VM für Kernsysteme, Docker für Rand-Services. Pragmatismus statt Dogma.

Drei konkrete Schritte:

  1. Projekt bewerten: Entscheidungsbaum durchgehen – 5 Minuten für die Einschätzung
  2. Schrittweise testen: Docker zuerst bei nicht-kritischen Services, nicht alles auf einmal containerisieren
  3. Weiterlernen: Kubernetes, Serverless, Edge Computing entwickeln sich schnell

Interesse an Docker? Als Nächstes: „Docker-Einstieg: Von der Installation zum ersten Container“ – Schritt für Schritt.

Das richtige Werkzeug spart Zeit und Geld. Hoffentlich hilft Ihnen dieser Artikel bei der Entscheidung.

FAQ

Was ist der grundlegende Unterschied zwischen Docker und virtuellen Maschinen?
Virtuelle Maschine = eigenständige Wohnung (vollständiges OS):
• Jede VM hat eigenen OS-Kernel, Treiber und Systemdienste
• Benötigt einen Hypervisor zur Hardware-Virtualisierung
• Start in Minuten (2–5 Minuten)
• Speicherverbrauch im GB-Bereich (1–4 GB Minimum)

Docker = Container (geteilter Kernel):
• Container teilen den OS-Kernel des Hosts
• Packt nur Anwendung und Laufzeitumgebung
• Start in Sekunden (1–5 Sekunden)
• Speicherverbrauch im MB-Bereich (2–50 MB)
Wie groß sind die Performance-Unterschiede zwischen Docker und VMs?
Performance-Vergleich:
• Startgeschwindigkeit: Docker in Sekunden (3 s), VM in Minuten (4 min)
• Ressourcenverbrauch: Docker im MB-Bereich (Redis-Container: CPU 0,08 %, RAM 2,6 MB), VM im GB-Bereich (allein das OS: 1–2 GB)
• Dichte pro Server: Docker Hunderte bis Tausende (32 Kerne/128 GB: 800+ Container), VM nur Dutzende (30 sind schon an der Grenze)
• Performance-Overhead: Docker unter 5 % (nahezu nativ), VM 10–20 %
• Image-Größe: Docker Dutzende bis Hunderte MB, VM mehrere GB bis Dutzende GB
Wann Docker, wann virtuelle Maschine?
Docker wählen:
• Microservices-Architektur
• DevOps/CI/CD-Pipeline
• Schnelles Deployment und elastische Skalierung
• Einheitliche Entwicklungsumgebung

VM wählen:
• Traditionelle Monolith-Anwendungen (Legacy-Systeme)
• Mehrere Betriebssysteme (Windows + Linux)
• Starke Isolation (Cloud-Anbieter/Finanz/Multi-Tenant)
• Vollständige OS-Umgebung nötig (Embedded/Treiberentwicklung)

Die meisten Unternehmen nutzen beides: VM für stabile Kernsysteme, Docker für neue Services.
Wie sicher ist Docker?
Isolationsstufe:
• Docker: Prozess-Isolation (geteilter Kernel)
• VM: Hardware-Isolation (eigener Kernel)

Docker hat Container-Escape-Risiken (z. B. CVE-2024-21626), VMs bieten stärkere Isolation.

Docker absichern:
1) Container nicht als root ausführen
2) Container-Berechtigungen einschränken (Capabilities)
3) Images regelmäßig auf Schwachstellen scannen (Trivy)

Für interne Anwendungen reicht Docker. Bei externen Multi-Tenant-Szenarien (Cloud/Finanz/Compliance) sind VMs Pflicht.
Kann Docker Windows-Anwendungen ausführen?
Docker läuft primär mit Linux-Containern; Windows-Container sind schlecht unterstützt.

Für Windows- und Linux-Anwendungen gleichzeitig brauchen Sie VMs (eine mit Windows, eine mit Linux).

Entwickler auf dem Mac testen Windows-Software nur über VMware oder VirtualBox.

Docker eignet sich nicht für Multi-OS-Anforderungen.
Wie trifft man die richtige Entscheidung?
Entscheidungsbaum:
• Neue Anwendung → Microservices → Docker
• Häufige Updates/Deployments → Docker
• Legacy-System → spezifisches OS/Kernel → VM
• Starke Isolation nötig → VM
• Containerisierung möglich → Docker

Empfehlung:
• Projektanforderungen bewerten
• Schrittweise testen (mit nicht-kritischen Services beginnen)
• Die meisten Unternehmen nutzen beides (Kernsysteme VM, neue Services Docker)

9 Min. Lesezeit · Veröffentlicht am: 17. Dez. 2025 · Aktualisiert am: 14. Juli 2026

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog