Docker容器与Unikernel相比

时间:2015-05-22 08:48:38

标签: docker xen halvm unikernel

我最近部署了一个带有docker的小型Haskell应用程序,使用" scratch-haskell"作为基本形象。

然后我读到了关于Unikernels和HALVM的内容。我有点困惑。

我的docker容器大约6MB。 Unikernel(使用相同的haskell应用程序)大小与我猜的大致相同。

Unikernel直接在Xen管理程序上运行,而docker Image(或通用LXC)在普通的Linux发行版上运行,该发行版在裸机上运行。

现在我有了#34;选择"运行具有多个最小容器的Linux或具有多个小Unikernel的Xen机器。

但这两种解决方案的优点和缺点是什么?一个比另一个更安全吗?它们之间是否存在显着的性能差异?

3 个答案:

答案 0 :(得分:11)

来自http://wiki.xenproject.org/wiki/Unikernels

  

Unikernel提供什么?

     

Unikernels通常会生成一个单一的运行时环境   启用仅使用该环境构建的单个应用程序。   通常,这种环境缺乏产生子进程的能力,   执行shell命令,创建多个线程或fork进程。   相反,它们提供了语言运行时的纯粹化身   目标,无论是OCaml,Haskell,Java,Erlang还是其他   环境。

     

Unikernels与Linux容器

     

最近有很多Linux Container的优点   传统虚拟机的解决方案。据容器拥护者说   它们的内存占用空间小,启动时间短,易于操作   包装使容器成为虚拟化的未来。虽然这些   容器的各个方面肯定是值得注意的,它们并不能说清楚   管理程序的世界。实际上,Unikernels可能会减少   容器的长期有用性。

     

Unikernel促进了所描述的完全相同的理想属性   容器的支持者,增添了绝对精彩   几乎没有其他解决方案可以匹配的安全故事。

因此,如果您只想运行Haskell应用程序,Unikernels可能对您有用,并且它们应该比docker更少开销(并且Docker开销非常小),但是如果您的应用程序需要一些准备好的环境,则需要与之通信非Unikernels软件docker是一个更好的选择。我想现在说Unikernel是有用的还是普遍的还为时过早,只有时间会证明。

答案 1 :(得分:3)

Unikernals非常适合无国籍的事情。当您开始需要磁盘访问时,最好使用Docker。

这就是为什么用于unikernals的所有“杀手”应用程序都是静态配置的内核,如静态网页或软件定义的网络堆栈。

答案 2 :(得分:2)

有许多好的解释,这是一个简单的解释:

Unikernel是VM,但针对特定应用程序进行了专门和优化。

enter image description here