Docker vs. virtuelle Maschinen
Die Virtualisierung physischer Hardwareressourcen ist einer der vielversprechendsten Trends des 21. Jahrhunderts. Es besteht stillschweigendes Einvernehmen darüber, dass moderne Computer über die Grenzen physischer Hardware hinausgehen müssen.
Als zwei der beliebtesten virtuellen Ressourcenlösungen auf dem Markt Docker Und virtuelle Maschinen (VM) haben maßgeblich dazu beigetragen, den Übergang zum virtualisierten Ressourcenmanagement voranzutreiben.
Viele Menschen wissen jedoch nicht, welche Wahl sie treffen sollen. Je nachdem, wen Sie fragen, haben Docker und virtuelle Maschinen jeweils ihre eigenen Vorteile. In diesem Artikel werfen wir einen Blick auf die Debatte zwischen Docker und virtuellen Maschinen, um herauszufinden, welche Vorteile beide für Ihr Unternehmen mit sich bringen können.
Inhalt [ verstecken ]
- Was ist Docker?
- Was ist eine virtuelle Maschine?
- Warum muss ich Docker verwenden?
- Warum brauche ich eine virtuelle Maschine?
- Docker vs. virtuelle Maschinen Kopf an Kopf
- Leistung
- Management
- Portabilität
- Sicherheit
- Single Point of Failure: Hypervisor
- Kosten
- Welches sollte ich wann verwenden?
- Anwendungsfälle
- Docker vs. virtuelle Maschinen: Gemeinsam größer
- Häufig gestellte Fragen zu Docker vs. VM
- Was sind die Unterschiede zwischen einem VM-Image und einem Docker-Image?
- Was ist sicherer, ein Virtual-Machine-Image oder ein Docker-Image?
- Kann ich Docker in einer VM ausführen?
Was ist Docker?
Dockerist ein Open-Source-Tool, dasverwendet Container zum Erstellen,einsetzen, UndVerwalten Sie verteilte Anwendungen. Entwickler verwenden Container, um Pakete für Anwendungen zu erstellen, die alle Kernkomponenten (z. B. Bibliotheken) enthalten, die zum isolierten Ausführen der Anwendung erforderlich sind. Durch die Trennung des Containers von der Maschine, auf der er ausgeführt wird, wird sichergestellt, dass die Anwendung auch dann ausgeführt wird, wenn Benutzer benutzerdefinierte Einstellungen auf ihrer Linux-Maschine ausführen, und die Nutzung von Computerressourcen minimiert wird.
Seit der Veröffentlichung von Docker im Jahr 2014 hat es einen von Kritikern gefeierten Status erreicht. Viele Unternehmen entscheiden sich aufgrund der Leistungsvorteile, die es bietet, für die Verwendung von Docker gegenüber virtuellen Maschinen. Heutzutage setzen Unternehmen wie Visa und PayPal Docker ein, um die Verwaltung ihrer Anwendungen zu unterstützen.
Was ist eine virtuelle Maschine?
ADie virtuelle Maschine ist eine Datei(oft als a bezeichnetHypervisor), der als physischer Computer fungiert. Eine virtuelle Maschinenutzt die physischen Ressourcen des Geräts, auf dem es betrieben wird, um die Umgebung eines physischen Geräts zu replizieren. Wie jedes andere Programm verfügt auch die virtuelle Maschine über ein eigenes Fenster auf Ihrem Gerät. Sie können mehrere virtuelle Maschinen auf einem Gerät ausführen.
Während eine virtuelle Maschine für ihre Funktion die Ressourcen des Computers nutzt, stellt sie tatsächlich ihre eigene virtuelle Hardware bereit. Die virtuelle Hardware einer virtuellen Maschine umfasstCPU,Erinnerung,Festplatte, UndNetzwerk Schnittstellen. Um die Effizienz des Computers zu gewährleisten, wird diese virtuelle Hardware dann der physischen Hardware des Geräts zugeordnet.
Virtuelle Maschinen sind vom System des physischen Geräts isoliert und arbeiten innerhalb einesSandkasten. Mit anderen Worten: Eine virtuelle Maschine ist völlig eigenständig. Dadurch eignen sie sich ideal zum Erstellen von Backups und zum Ausführen von Software. Die beliebtesten Produkte auf dem Markt sindVMWareUndVirtualBox.
Warum muss ich Docker verwenden?
Einer der Hauptgründe, warum Unternehmen Docker nutzen, ist die Alternative zu virtuellen Maschinen. Docker wird als Alternative verwendet, weil dies der Fall istleichterhinsichtlich der Ressourcen als virtuelle Maschinen. Container teilen sich Betriebssysteme, während virtuelle Maschinen darauf ausgelegt sind, virtuelle Hardware zu emulieren. Durch die gemeinsame Nutzung von Betriebssystemen können Docker-Anwendungen ausgeführt werden, während sie nur einen Bruchteil der Ressourcen einer virtuellen Maschine verbrauchen.
Docker verwendet die Docker-Engine, die sich auf einer Linux-Instanz befindet, und nicht die virtuellen ressourcenintensiven Maschinen, die von virtuellen Maschinen verwendet werden. Diese Struktur bedeutet, dass Docker-Container das Potenzial dazu habenHalten Sie mehr als das Fünffache der Anzahl an Serveranwendungsinstanzen aufrecht, die Sie mit einer virtuellen Maschine erreichen könnten. Die weit verbreitete Akzeptanz von Docker wurde auch durch die Tatsache unterstützt, dass Entwickler ihren eigenen Code hinzufügen können, um schlanke Anwendungen anzupassen und bereitzustellen. Diese Anwendungen können dann direkt auf Maschinen oder in der Cloud bereitgestellt werden.
Warum brauche ich eine virtuelle Maschine?
Obwohl Docker hinsichtlich seines Ressourcenbedarfs die Nase vorn hat, sind virtuelle Maschinen für moderne Unternehmen nach wie vor äußerst wichtig. Sie stellen immer noch eine zuverlässige Möglichkeit dar, die mit der physischen Hardware verbundenen Kosten zu begrenzen.Durch die Virtualisierung Ihrer Infrastruktur mit virtuellen Maschinen können Sie Ihre Netzwerkressourcen effizienter nutzen.Beispielsweise müssen Sie nicht wie bei einem physischen Computer Energie- und Lüfterressourcen aufwenden, um eine virtuelle Maschine zu betreiben.
Mit virtuellen Maschinen können Sie Ressourcen auch deutlich effizienter bereitstellen. Virtuelle Maschinen können von einem physischen Server auf einen anderen migriert werden, um sicherzustellen, dass die Rechenressourcen gleichmäßig auf die Geräte verteilt werden. Administratoren können mit virtuellen Maschinen jonglieren, sodass physische Speicher- und Verarbeitungskapazitäten gleichmäßig auf mehrere Maschinen verteilt werden.
Virtuelle Maschinen verringern außerdem das Risiko eines Ausfalls Ihrer Infrastruktur.Während es bei einem physischen Gerät mit der Zeit zu Leistungseinbußen und Ausfällen kommen kann, ist dies bei virtueller Hardware nicht der Fall. Aus diesem Grund haben viele Administratoren begonnen, virtuelle Maschinen als Disaster-Recovery-Lösung und zur Sicherung ihrer Daten zu nutzen.
Verwandter Beitrag: Beste Docker-Überwachungstools
Docker vs. virtuelle Maschinen Kopf an Kopf
Weniger effizient | Effizienter |
VMs führen ihr eigenes Betriebssystem aus | Container teilen sich ein Host-Betriebssystem |
Hardware-Virtualisierung | Betriebssystemvirtualisierung |
Sicherer (getrennt) | Weniger sicher (Isolation auf Prozessebene) |
Leistung
Wie Sie sehen, bietet Docker aufgrund seiner Struktur einige inhärente Vorteile. Ein Container kann einen Kernel und Anwendungsbibliotheken auf eine Weise gemeinsam nutzen, wie es virtuelle Maschinen nicht können. Ebenfalls,Docker benötigt weniger Rechenressourcen als virtuelle Maschinen, was zu einem besseren Erlebnis innerhalb der Anwendung führt.
In Echtzeit ist Docker weniger ressourcenintensiv und kann viel schneller gestartet werden als virtuelle Maschinen. Der Grund dafür ist, dass virtuelle Maschinen bei jedem Start ein Betriebssystem laden müssen.Ebenso müssen Sie Containern keine Ressourcen zuweisen, wie dies bei virtuellen Maschinen der Fall ist.
Management
Im Hinblick auf die Verwaltung bietet jede dieser Technologien einen flexibleren Ansatz für die Ressourcenbereitstellung. Allerdings müssen beide Technologien dennoch effektiv verwaltet werden, damit sie in Ihrer Umgebung gut funktionieren. Bei der Container-Technologie kommt es darauf an, Sicherheitsbedenken zu berücksichtigen und sicherzustellen, dass das gemeinsame Betriebssystem keine Fehler aufweist.
Bei virtuellen Maschinen liegt die Komplexität in der Verwaltung virtueller Ressourcen. Zum Beispiel dubenötigen die Bandbreite und Verarbeitungskapazität zur Unterstützung virtueller Maschinen(insbesondere, wenn Sie mehrere virtuelle Maschinen auf einem Gerät ausführen). Wenn Sie nicht die erforderlichen Ressourcen zuweisen, werden die virtuellen Maschinen nicht effektiv ausgeführt.
Der Administrator muss auch berücksichtigen, wie er die Nutzung der virtuellen Maschine mit den im gesamten Netzwerk verfügbaren Ressourcen in Einklang bringt.Die Möglichkeit, virtuelle Maschinen zu verschieben, ist zwar hilfreich, um Ressourcen effizienter zu nutzen, bringt aber auch die Notwendigkeit mit sich, sicherzustellen, dass die Ressourcen gleichmäßig verteilt sind. Dies gilt auch für Docker, stellt jedoch aufgrund seiner geringen Leistung weniger ein Problem dar.
Selbst wenn Sie Ihre Ressourcen perfekt verwalten, bergen virtuelle Maschinen natürlich immer noch eine Reihe von Risiken. Dort ist derEs besteht die Gefahr, dass die verfügbaren Ressourcen überschritten werdenoder ein einzelner Hardwarefehler, der eine Reihe virtueller Maschinen auf einmal auslöscht. Dies setzt den Administrator zusätzlich unter Druck, den Überblick über jedes noch so kleine Nutzungsdetail zu behalten. Dieses Problem tritt nicht nur bei virtuellen Maschinen auf, ist aber für sie sicherlich ein größeres Problem als für Docker-Container.
Portabilität
Die Portabilität jeder Technologie ist für diejenigen relevant, die Netzwerkressourcen optimieren möchten. Docker-Container sind eigenständige Pakete, die die erforderliche Anwendung ausführen.Docker-Container können problemlos portiert werden, da sie keine separaten Betriebssysteme haben. Sobald sie portiert sind, können sie in Sekundenschnelle gestartet werden, was sie zu einer tragbareren Alternative macht.
Im Gegensatz dazu sind virtuelle Maschinen nicht so portabel, da sie jeweils über ein eigenes Betriebssystem verfügen. Dies macht sie umständlich, da das Betriebssystem nicht auf eine andere Plattform portiert werden kann und einwandfrei funktioniert. In Umgebungen, in denen Sie eine Vielzahl von Anwendungen für unterschiedliche Probleme bereitstellen müssen, sind Sie mit Docker besser aufgehoben. Durch die Trennung des Betriebssystems vom Betriebssystem des Hostgeräts wird sichergestellt, dass die Anwendungen ohne unnötige Unterbrechungen ausgeführt werden können.
Sicherheit
Einer der Hauptstreitpunkte zwischen der Unterstützung virtueller Maschinen und Docker ist die Frage, welches Setup sicherer ist. Dies ist ein besonders komplexer Bereich, da es viele Faktoren zu diskutieren gibt, von den angeborenen Schwachstellen von Docker bis hin zum Single Point of Failure des Hypervisors einer virtuellen Maschine. In diesem Abschnitt werden wir uns die beiden größten Bedrohungen für die Sicherheit jeder dieser Technologien ansehen.
Betriebssystemtrennung
Sowohl Docker als auch virtuelle Maschinen trennen Anwendungen voneinander. Das heißt, wenn eine Anwendung kompromittiert wird, kann dies keine Auswirkungen auf andere Anwendungen haben. Theoretisch bietet dies den perfekten Schutz, aber Docker hat ein grundlegendes Problem; Alle Anwendungen teilen sich ein Betriebssystem. Wenn das Betriebssystem von einer kompromittierten Anwendung angegriffen wird, kann ein Angriff alle Container gleichzeitig betreffen.
Virtuelle Maschinen verhindern dieses ProblemHalten Sie das zur Steuerung der Anwendung verwendete Betriebssystem vom Hypervisor getrenntdas mit der Hardware interagiert. Es gibt ein Betriebssystem, mit dem der Benutzer interagieren kann, um die Anwendung zu verwenden, aber es erlaubt ihm nicht, mit der Hardware zu interagieren. Dies bedeutet, dass es äußerst unwahrscheinlich ist, dass ein Fehler in einer Anwendung negative Auswirkungen auf die Hardware des Hostsystems hat.
In diesem Sinne bieten virtuelle Maschinen mehr Sicherheit vor Betriebssystemfehlern und Sicherheitsverletzungen als Docker-Container. DerDas von Docker zur Optimierung der Ressourcennutzung verwendete Modell der Anwendungstrennung geht zu Lasten der Sicherheit. Virtuelle Maschinen haben den Vorteil, dass sie das Betriebssystem von der Hardware trennen, um das Risiko einer Beschädigung zu minimieren.
Single Point of Failure: Hypervisor
Nur weil virtuelle Maschinen im Hinblick auf die Anwendungstrennung sicherer sind, heißt das nicht, dass sie nicht auch über eigene Schwachstellen verfügen. In virtuellen MaschinenHypervisoren sind ein Single Point of Failure. Wenn der Hypervisor ausfällt, könnten eine Menge Anwendungen auf einen Schlag ausfallen. Das heißt, wenn ein Cyber-Angreifer Ihr Netzwerk beschädigen wollte, könnte er Malware an die VM senden.
Im Vergleich,Docker-Container haben keinen Single Point of Failure. Obwohl der Single Point of Failure das Potenzial hat, Anwendungen angreifbar zu machen, sind Hypervisoren sehr schwer zu durchbrechen. Obwohl ein Cyberangreifer in einen Hypervisor eindringen könnte, ist dies aufgrund der Komplexität des verwendeten Codes sehr unwahrscheinlich. An diesem Punkt ist der Ausfall eines Hypervisors eher ein potenzieller Unsicherheitsbereich als ein häufig ausgenutzter Einstiegspunkt.
Kosten
Die Kosten für Docker und virtuelle Maschinen sind ein weiterer Bereich, der schwer zu messen ist. 451 Untersuchungen deuten darauf hin Container haben niedrigere TCO oder Gesamtbetriebskosten als Hardware-Virtualisierung . Der Grund dafür ist, dass Docker-Container Ressourcen effizienter nutzen. Jede virtuelle Maschine verfügt über ein eigenes Betriebssystem, das vom Hostsystem unterstützt werden muss. Dies erfordert Rechenressourcen, die die physischen Hardwarekosten langfristig in die Höhe treiben.
Docker beseitigt dieses Problem, indem es ein Betriebssystem für alle seine Anwendungen verwendet. Container teilen sich ein Betriebssystem, um den Ressourcenbedarf zu minimieren. Bei der Ausführung mehrerer Anwendungen ist dies besonders relevant, da Sie mit nur einem Betriebssystem viele verschiedene Anwendungen ausführen können. Im Vergleich dazu verfügen virtuelle Maschinen über ein Betriebssystem für jede Anwendung, was bedeutet, dass Sie mehr Ressourcen bezahlen müssen.
Die direkten Kosteneinsparungen von Docker-Containern sind schwer zu messen, es müssen jedoch eine Reihe von Faktoren berücksichtigt werden. Mit Containern können Sie Ihre aktuelle Netzwerkinfrastruktur besser nutzen als mit virtuellen Maschinen. Wenn Sie eine Hochskalierung benötigen, können Sie dies ebenfalls mit weniger Ressourcen tun und gleichzeitig mehr Strom verbrauchen, um virtuelle Maschinen aufrechtzuerhalten.
Welches sollte ich wann verwenden?
Auch wenn Docker hinsichtlich Effizienz und Leistung im Vorteil ist, sollten Sie nicht den Fehler machen zu glauben, dass Container von Natur aus besser sind als virtuelle Maschinen. Docker und virtuelle Maschinen haben in bestimmten Situationen ihre eigenen Vorteile. Ob eine Anwendung in einem Container oder einer virtuellen Maschine platziert wird, hängt ganz von Ihren Nutzungsanforderungen ab. In diesem Abschnitt werden wir uns ansehen, wie man zwischen den beiden wählt.
Anwendungstyp
Der erste Faktor, den Sie bei Ihrer Wahl berücksichtigen sollten, ist die Art der Anwendung, die Sie bereitstellen möchten. Container sind für die Unterstützung von Anwendungen konzipiert, die nicht mit dem Host-Betriebssystem in Zusammenhang stehen. Docker-Container sind für Anwendungen gedacht, die Sie unabhängig von der Infrastruktur des Hostsystems ausführen möchten. Das heißt, wenn Sie eingebettete Systeme aufrechterhalten möchten, die enger mit dem Host-Gerät integriert sind, sollten Sie sich besser für eine virtuelle Maschine entscheiden.
Größe
Der nächste Faktor, den Sie bei der Wahl zwischen beiden berücksichtigen sollten, ist die Größe Ihrer Anwendung. Die Menge an Rechenressourcen, die Ihre Anwendung für eine effektive Ausführung benötigt, bestimmt, welche Lösung Sie auswählen müssen. Wenn Sie Anwendungen unterstützen möchten, die nur eine Maschine benötigen, um auf einem Computer ausgeführt zu werden, wie z. B. Microservices, wäre ein Docker-Container die natürlichere Wahl. Im Gegensatz dazu wäre eine virtuelle Maschine für Dienste mit hoher Priorität wie Datenbanken die bessere Wahl.
Anwendungsfälle
Infrastruktur | Nein | Ja |
Container-Umgebungshosts | Nein | Ja |
Datenbanken | Nein | Ja |
Legacy-Apps | Ja | Nein |
Mikrodienste | Ja | Nein |
Web Applikationen | Ja | Nein |
Wie du sehen kannst,Virtuelle Maschinen sind in drei Hauptanwendungsfällen im Vorteil:Infrastruktur,Container-Umgebungshosts, UndDatenbanken. Der Hauptbereich ist die Infrastruktur. Virtuelle Maschinen können eine Netzwerkinfrastruktur in Form von Routern und Firewalls erstellen, was mit Docker nicht möglich ist. Virtuelle Maschinen können auf der Ebene der virtuellen Hardware interagieren und ermöglichen es dem Benutzer, Änderungen an der Infrastruktur vorzunehmen. Virtuelle Maschinen werden aufgrund ihrer Fähigkeit zur Interaktion mit Hardware häufig als Container-Hosts verwendet.
Andererseits,Docker bietet eine einfache Möglichkeit, Legacy-Apps bereitzustellenin fast jeder Umgebung. Da die Bibliotheken zusammen mit der Anwendung enthalten sind, ist die Bereitstellung einfach. Microservices sind auch ideal für Docker, da sich die einfache Struktur von Containern gut für Anwendungen mit einer Kernaufgabe eignet (im Gegensatz zu einer Anwendung mit vielen verschiedenen Verantwortlichkeiten).
Docker vs. virtuelle Maschinen: Gemeinsam größer
Obwohl Docker und virtuelle Maschinen ihre Vorteile gegenüber Hardwaregeräten haben, ist Docker im Hinblick auf die Ressourcennutzung das effizientere von beiden. Wenn zwei Organisationen völlig identisch wären und dieselbe Hardware verwenden würden, wäre das Unternehmen, das Docker verwendet, in der Lage, mehr Anwendungen zu unterstützen. Die Fähigkeit von Docker, Anwendungen zu verwalten und bereitzustellen, geht weit über die von virtuellen Maschinen hinaus.
Letztendlich hängt dies von der internen Architektur virtueller Maschinen ab. Die Emulation einer physischen Infrastruktur mag leichter sein als die eines Hardwaregeräts, aber es gibt immer noch zu viel Fett, um mit Docker mithalten zu können. Zweifellos müssen beide Technologien sorgfältig gehandhabt werden, um die Wirksamkeit zu maximieren.
Lassen Sie sich jedoch nicht darauf ein, virtuelle Maschinen komplett abzuschreiben. Durch die Kombination beider können Sie eine Reihe von Anwendungsfällen abdecken und Ihre virtuellen Ressourcen so flexibel wie möglich halten. Profitieren Sie zudem von der Sicherheit virtueller Maschinen bei besonders wichtigen Anwendungen und dem geringen Rechenaufwand von Docker.
Häufig gestellte Fragen zu Docker vs. VM
Was sind die Unterschiede zwischen einem VM-Image und einem Docker-Image?
Docker teilt das Betriebssystem des Hosts, während eine VM eine Installation des Betriebssystems enthält. Ein Docker-Image ist eine schreibgeschützte Vorlage, die zum Erstellen des Containers verwendet wird. Ein Image einer virtuellen Maschine ist eine Vorlage, die zum Erstellen einer VM verwendet wird. Das VM-Image enthält das Betriebssystem, das Docker-Image jedoch nicht.
Was ist sicherer, ein Virtual-Machine-Image oder ein Docker-Image?
Im Allgemeinen sind virtuelle Maschinen sicherer als Container, da sie das Betriebssystem enthalten. Daher besteht für einen Eindringling keine Möglichkeit, über eine beispielsweise in PowerShell geschriebene Routine in die VM einzudringen und in den Bereich der VM einzudringen. Docker-Container hingegen nutzen das Host-Betriebssystem und bieten somit einen Kanal, über den Hacker in sie eindringen können. Da sowohl VM- als auch Docker-Images schreibgeschützt sind, können sie nicht manipuliert werden und sind daher gleichermaßen sicher.
Kann ich Docker in einer VM ausführen?
Es ist möglich, Docker in einer VM zu verwenden. In Wahrheit ist Docker ein Linux-System und um es für Windows verfügbar zu machen, haben die Entwickler von Docker eine Linux-VM integriert. Docker läuft also bereits auf einer VM, wenn es unter Windows läuft, und Sie würden wahrscheinlich keine weiteren Vorteile erzielen, wenn Sie es in eine andere Virtualisierungsebene einbinden würden. Wenn Ihre VM über ein Windows-Gastbetriebssystem verfügt, kann es zu Effizienzproblemen kommen, da automatisch zusätzlich eine Linux-VM installiert wird, um Docker zum Laufen zu bringen.
Siehe auch: VM-Überwachungstools und -Software