Docker Container по сравнению с Unikernel

Недавно я развернул крошечное приложение Haskell с докере, используя "scratch-haskell" в качестве базового изображения.

Затем я читал о Unikernels и HALVM. И я немного смутился.

Мой контейнер для докеров размером около 6 МБ. Unikernel (с тем же приложением haskell) будет примерно того же размера, что и я.

Unikernel работает непосредственно на гипервизоре Xen, тогда как изображение Docker Image (или вообще LXC) работает на обычном дистрибутиве Linux, который работает на голом металле.

Теперь у меня есть "выбор" для запуска Linux с несколькими минимальными контейнерами или с машиной Xen с несколькими маленькими Unikernel.

Но каковы преимущества и недостатки этих двух решений? Является ли более безопасным, чем другой? И есть ли существенные различия в производительности между ними?

Ответы

Ответ 1

из http://wiki.xenproject.org/wiki/Unikernels

Что предоставляют Unikernels?

Unikernels обычно генерируют исключительную среду выполнения, предназначенную для включить отдельные приложения, созданные исключительно с этой средой. Как правило, эта среда не обладает способностью генерировать подпроцессы, выполнять команды оболочки, создавать несколько потоков или процессы fork. Вместо этого они обеспечивают чистое воплощение языка исполнения target, будь то OCaml, Haskell, Java, Erlang или некоторые другие окружающая среда.

Unikernels Versus Linux Containers

Недавно было сделано много преимуществ преимуществ Linux Container решений по традиционным виртуальным машинам. Как заявляют сторонники контейнеров, их легкий объем памяти, быстрое время загрузки и простоту упаковка делает контейнеры будущим виртуализации. Хотя эти аспекты контейнеров, безусловно, примечательны, они не означают конца мира гипервизора. Фактически, Unikernels может уменьшить долгосрочная полезность контейнеров.

Unikernels облегчают те же самые желательные атрибуты, описанные сторонников контейнеров, с добавлением абсолютно великолепных который может найти несколько других решений.

Итак, если вы хотите просто запустить приложение Haskell, то Unikernels могут работать для вас, и у них должно быть меньше затрат, чем докеров (и в любом случае накладные расходы на докеры очень малы), но если вашему приложению потребуется какая-то подготовленная среда, вам необходимо связаться с не-программный доклер Unikernels - лучший выбор. Я думаю, еще рано говорить, что Unikernels будут полезны или широко распространены или нет, только время покажет.

Ответ 2

Unikernals отлично подходят для вещей, которые не имеют гражданства. Когда вы начинаете пользоваться дисковым доступом, вам лучше использовать Docker.

Вот почему все "убийственные" приложения для unikernals являются статически настроенными ядрами, такими как статические веб-страницы или определенные сетевые стеки программного обеспечения.

Ответ 3

Существует много хороших объяснений, которые просты:

Unikernel - это виртуальные машины, но специализированные и оптимизированные для конкретного приложения.

введите описание изображения здесь