GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Container vs. virtuelle Maschinen (VMs):Was ist der Unterschied?

Einführung

Beides virtuelle Maschinen und Container werden verwendet, um isolierte virtuelle Umgebungen zum Entwickeln und Testen von Anwendungen oder Software zu erstellen. Die Frage ist, wie sie sich unterscheiden.

In diesem Artikel werden die beiden Konzepte untersucht, um den Unterschied zwischen einem Container und einer VM zu verstehen. Es definiert Container und virtuelle Maschinen separat sowie nebeneinander, um zu sehen, was sie voneinander unterscheidet.

Was sind virtuelle Maschinen (VMs)?

Eine virtuelle Maschine (VM) ist ein Betriebssystem, das die physischen Ressourcen eines Servers teilt. Es ist ein Gast auf der Hardware des Hosts, weshalb es auch als Gastmaschine bezeichnet wird .

Eine virtuelle Maschine besteht aus mehreren Schichten. Die Schicht, die die Virtualisierung ermöglicht, ist der Hypervisor . Ein Hypervisor ist eine Software, die den Server virtualisiert.

Wie eine virtuelle Maschine funktioniert

Alles, was zum Ausführen einer App erforderlich ist, ist in der virtuellen Maschine enthalten – die virtualisierte Hardware, ein Betriebssystem und alle erforderlichen Binärdateien und Bibliotheken. Daher haben virtuelle Maschinen ihre eigene Infrastruktur und sind eigenständig.

Jede VM ist vollständig vom Host-Betriebssystem isoliert. Außerdem ist ein eigenes Betriebssystem erforderlich, das sich vom Betriebssystem des Hosts unterscheiden kann. Jedes hat seine eigenen Binärdateien, Bibliotheken und Anwendungen.

Virtual Machine Monitor (VMM) :ein anderer Name für den Hypervisor

Hostmaschine :die Hardware, auf der die VM installiert ist

Gast Maschine :ein anderer Name für die VM

Virtuelle Maschine:VORTEILE

VMs senken die Kosten . Anstatt eine Anwendung auf einem einzelnen Server auszuführen, ermöglicht eine virtuelle Maschine die Nutzung einer physischen Ressource, um die Arbeit vieler zu erledigen. Daher müssen Sie keine aufzählbaren Stapel von Servern kaufen, warten und lagern.

Da es nur einen Host-Rechner gibt, ermöglicht er Ihnen eine effiziente Verwaltung alle virtuellen Umgebungen mit der zentralisierten Leistung des Hypervisors. Diese Systeme sind vollständig voneinander getrennt, was bedeutet, dass Sie mehrere Systemumgebungen installieren können .

Am wichtigsten ist, dass eine virtuelle Maschine vom Host-Betriebssystem isoliert und sicher ist Ort zum Experimentieren und Entwickeln von Anwendungen.

Virtuelle Maschine:NACHTEILE

Virtuelle Maschinen können viele Systemressourcen beanspruchen des Host-Rechners, der viele GB groß ist. Das Ausführen einer einzelnen App auf einem virtuellen Server bedeutet, dass eine Kopie eines Betriebssystems sowie eine virtuelle Kopie der gesamten Hardware ausgeführt werden, die für den Betrieb des Systems erforderlich ist. Das summiert sich schnell zu einer Menge RAM und CPU-Zyklen.

Der Prozess der Verlagerung einer App, die auf einer virtuellen Maschine ausgeführt wird, kann ebenfalls kompliziert sein da es immer an das Betriebssystem angehängt ist. Daher müssen Sie sowohl die App als auch das Betriebssystem damit migrieren. Außerdem weist der Hypervisor beim Erstellen einer virtuellen Maschine der VM dedizierte Hardwareressourcen zu.

Eine virtuelle Maschine nutzt selten alle verfügbaren Ressourcen, was die Planung und Verteilung erschweren kann. Das ist immer noch wirtschaftlich im Vergleich zum Betrieb separater tatsächlicher Computer.

Beliebte VM-Anbieter:

  • VMware-vSphere
  • VirtualBox
  • Zen
  • Hyper-V
  • KVM

Was ist ein Container?

Ein Container ist eine Umgebung, in der eine Anwendung ausgeführt wird, die nicht vom Betriebssystem abhängig ist. Es isoliert die App vom Host, indem es sie virtualisiert. Dadurch können Benutzer mehrere Workloads auf einer einzigen Betriebssysteminstanz erstellen.

Der Kernel des Host-Betriebssystems erfüllt die Anforderungen zum Ausführen verschiedener Funktionen einer App, die in Container unterteilt sind. Jeder Container führt isolierte Aufgaben aus. Es kann weder den Hostcomputer beschädigen noch in Konflikt mit anderen Apps geraten, die in separaten Containern ausgeführt werden.

Wie funktionieren Container?

Wenn Sie in einem Container arbeiten, können Sie eine Vorlage einer Umgebung erstellen, die Sie benötigen. Der Container führt im Wesentlichen einen Snapshot des Systems zu einem bestimmten Zeitpunkt aus und sorgt so für Konsistenz im Verhalten einer App.

Der Container teilt den Kernel des Hosts, um alle einzelnen Apps innerhalb des Containers auszuführen. Die einzigen Elemente, die jeder Container benötigt, sind Bins, Bibliotheken und andere Laufzeitkomponenten.

Container:VORTEILE

Container können so klein wie 10 MB sein und Sie können ihre Speicher- und CPU-Auslastung einfach begrenzen. Dadurch werden Behälter bemerkenswert leicht und schnell zu starten im Gegensatz zur Bereitstellung virtueller Maschinen, bei denen das gesamte Betriebssystem bereitgestellt werden muss.
Aufgrund ihrer Größe können Sie schnell skalieren in und aus Containern und fügen Sie identische Container hinzu.

Außerdem eignen sich Container hervorragend für Continuous Integration und Continuous Deployment (CI/CD)-Implementierung. Sie fördern die gemeinsame Entwicklung, indem sie Bilder unter Entwicklern verteilen und zusammenführen.

Container:NACHTEILE

Ein Container verwendet den Kernel des Hostbetriebssystems und weist Betriebssystemabhängigkeiten auf. Daher können sich Container vom zugrunde liegenden Betriebssystem durch Abhängigkeit, aber nicht durch Typ unterscheiden. Der Kernel des Hosts schränkt die Verwendung anderer Betriebssysteme ein .

Container bieten immer noch nicht die gleiche Sicherheit und Stabilität das VMs können. Da sie sich den Kernel des Hosts teilen, können sie nicht so isoliert sein wie eine virtuelle Maschine. Folglich sind Container auf Prozessebene isoliert, und ein Container kann andere beeinträchtigen, indem er die Stabilität des Kernels beeinträchtigt.

Darüber hinaus wird ein Container, sobald er seine Aufgabe erfüllt hat, heruntergefahren und alle darin enthaltenen Daten gelöscht. Wenn Sie möchten, dass die Daten auf dem Hostserver verbleiben, müssen Sie sie mithilfe von Data Volumes speichern. Dies erfordert eine manuelle Konfiguration und Bereitstellung auf dem Host.

Beliebte Containeranbieter:

  • Docker
  • AWS
  • LXD
  • Java-Container
  • Hyper-V-Container
  • Windows Server-Container

So wählen Sie VMs oder Container aus

Die Entscheidung, ob Sie sich für virtuelle Maschinen oder Container entscheiden, hängt von der Arbeit ab, die Ihre virtuelle Umgebung ausführen soll.

Virtuelle Maschinen sind eine bessere Lösung, wenn Sie:

  1. Verwalten Sie eine Vielzahl von Betriebssystemen
  2. Mehrere Apps auf einem einzigen Server verwalten
  3. Führen Sie eine App aus, die alle Ressourcen und Funktionen eines Betriebssystems benötigt
  4. Vollständige Isolierung und Sicherheit gewährleisten

Container sind geeignet, wenn Sie:

  1. Maximieren Sie die Anzahl der Apps, die auf einem Server ausgeführt werden
  2. Stellen Sie mehrere Instanzen einer einzelnen Anwendung bereit
  3. Haben Sie ein leichtgewichtiges System, das schnell startet
  4. Entwickeln Sie eine Anwendung, die auf jeder zugrunde liegenden Infrastruktur läuft

Virtuelle Maschinen werden häufig für verwendet anspruchsvolle Anwendungen, Netzwerkinfrastruktur und Apps, die die meisten Ressourcen der VM verbrauchen.

Container werden häufig für verwendet Web, Anwendungen und Caching-Dienste, Netzwerk-Daemons und kleine Datenbanken.


Ubuntu
  1. So entfernen Sie KVM-basierte virtuelle Maschinen unter Redhat Linux

  2. Was ist der Unterschied zwischen LXC-, LXD- und Docker-Containern?

  3. Was ist der Unterschied zwischen Tasksel und normalen Methoden?

  4. Wie greife ich von einer virtuellen Maschine in Gnome-Boxen auf das Internet zu?

  5. Cloud-Hosting vs. VPS-Hosting:Was ist der Unterschied?

Failover vs. Failback:Was ist der Unterschied?

So finden Sie die IP-Adresse einer virtuellen KVM-Maschine

So erstellen Sie eine virtuelle Maschine in KVM auf der Befehlszeile

So erstellen Sie virtuelle Maschinen in KVM mit Virt-Manager

So installieren Sie virtuelle Maschinen, die für die Red Hat Virtualisierungsumgebung optimiert und konfiguriert sind

So migrieren Sie virtuelle Maschinen von einem Host auf einen anderen in der Red Hat Virtualisierungsumgebung