2015-05-22 18 views
15

Ich habe vor kurzem eine winzige Haskell-App mit Andockfenster mit "scratch-haskell" als Basis-Image bereitgestellt.Docker Container im Vergleich zu Unikernel

Dann lese ich über Unikernels und HALVM. Und ich bin ein bisschen verwirrt.

Mein Docker Container ist etwa 6 MB groß. Ein Unikernel (mit der gleichen Haskell-App) wäre ungefähr gleich groß.

Der Unikernel läuft direkt auf dem Xen Hypervisor, während der Docker Image (oder General LXC) auf einer normalen Linux Distribution läuft, die auf Bare Metal läuft.

Jetzt habe ich die "Wahl", Linux mit mehreren Minimalcontainern ODER eine Xen-Maschine mit mehreren kleinen Unikernels zu betreiben.

Aber was sind die Vor- und Nachteile dieser beiden Lösungen? Ist einer sicherer als der andere? Und gibt es signifikante Leistungsunterschiede zwischen ihnen?

+1

unikernel ziemlich neu zu sein, ich denke, Sie sollten Ihre eigenen Tests – user2915097

Antwort

10

von http://wiki.xenproject.org/wiki/Unikernels

Was Geben Sie Unikernels?

Unikernels erzeugt normalerweise eine singuläre Laufzeitumgebung, die für einzelne Anwendungen aktiviert, die ausschließlich mit dieser Umgebung erstellt wurden. Im Allgemeinen ist es in dieser Umgebung nicht möglich, Subprozesse zu erzeugen, Shell-Befehle ausführen, mehrere Threads erstellen oder Fork-Prozesse erstellen. Stattdessen bieten sie eine reine Inkarnation der Sprache Runtime Ziel, sei es OCaml, Haskell, Java, Erlang oder eine andere Umgebung.

Unikernels Versus Linux Containers

Viel wurde vor kurzem die Vorteile von Linux Container Lösungen im Vergleich zu herkömmlichen VMs gemacht. Es wird von Container Befürworter gesagt, dass ihre leichte Speicherbedarf, schnelle Boot-Zeit und Leichtigkeit Verpackung Container die Zukunft der Virtualisierung macht. Während diese Aspekte von Containern sicherlich bemerkenswert sind, buchstabieren sie nicht das Ende der Welt des Hypervisors. In der Tat kann Unikernels die langfristige Nützlichkeit von Containern reduzieren.

Unikernels erleichtern die gleichen wünschenswerten Attribute beschrieben der Container-Befürworter, mit der Hinzufügung einer absolut prächtigen Sicherheit Geschichte, die nur wenige andere Lösungen übereinstimmen können.

Also, wenn Sie ausführen möchten nur Haskell Anwendung Unikernels für Sie arbeiten kann, und sie sollten auch weniger Overhead als Docker (und Docker-Overhead ist sehr klein sowieso), aber wenn Ihre Anwendung wird einige vorbereitete Umgebung benötigen, müssen Mit dem Unikernels Software Docker zu kommunizieren ist eine bessere Wahl. Ich denke, es ist zu früh, um zu sagen, ob Unikernels nützlich oder verbreitet sein wird oder nicht, nur die Zeit wird es zeigen.

+0

obwohl, sind nicht unikernels immer mächtiger wie die Zeit vergeht laufen? in Bezug auf Threading/Forking und Zugriff auf Speicher usw. Ich sehe Potenzial für einige Konvergenz ... –

+1

Threading und Gabelung sind im Gegensatz zu der Definition von unikernel. – bahamat

2

Unikernals sind ideal für Dinge, die zustandslos sind. Wenn Sie mit dem Zugriff auf die Festplatte beginnen, sollten Sie besser Docker verwenden.

Deshalb sind alle "killer" Apps für unikernals statisch konfigurierte Kernel, wie statische Webseiten oder Software definierte Netzwerkstacks.

+2

Ich bin mir ziemlich sicher, dass unikernels bei Bedarf Stateful sein können. Vielleicht nicht, indem eine Art von Platten-I/O verfügbar gemacht wird, aber es gibt andere Mittel zur Persistenz. –

2

Es gibt viele gute explations heren einfach:

Unikernel sind VMs aber spezialisiert und für die jeweilige Anwendung optimiert.

enter image description here

+1

Hier verpassen wir Docker läuft auf blankem Metall ohne Hypervisor/keine VMs – bodrin

+0

Schön illustriert, aber bitte Referenzen auflisten. – securecurve