为什么说 Unikernel 会代替容器?
本文作者Sinclair Schuller是Apprenda这家企业平台即服务领域领导厂商的首席执行官兼联合创始人。
容器技术在过去这一年得到了莫大的关注,这自在情理之中。像Docker和CoreOS这些项目在普及已存在多年的操作系统功能特性方面做得非常到位,它们让那些功能特性变得更易于使用或访问。
容器让你很容易包装和分发应用程序,这在基于云的基础设施模式下变得尤为重要。容器比之前的技术:虚拟机来得轻薄,还提供了更快的启动时间,并保持合理的隔离机制,确保一个应用程序与另一个应用程序安全地共享基础设施。容器还进行了优化,以便以一种安全、兼容的方式,在单单一个操作系统实例上运行许多应用程序。
那么,它有什么问题吗?
即便“瘦身”之后,传统的操作系统依然是整块式,很笨拙。如果你看一下容器实例的大小:即便没有数GB,至少也有数百MB。很显然,实例里面拥有的不仅仅是托管的应用程序。拥有一份操作系统,意味着该操作系统的所有服务和子系统连同在内,无论它们有没有必要。这种庞大体积有悖于更广泛的云计算市场的几个趋势,也就是微服务趋势、需要更高的安全性以及需要一切都尽快运行。
容器依赖操作系统会是其症结所在,这导致了单内核(unikernel)悄然兴起。单内核方法让开发人员只需从一组代码库中选择其应用程序正常运行所需要的那部分操作系统服务,而不是需要整个操作系统来托管应用程序。然后,这些代码库直接编译到应用程序,其结果就是单内核本身。
单内核模式完全不需要操作系统,让应用程序可以直接在虚拟机管理程序或服务器硬件上运行。在这种模式下,根本没有任何的软件堆栈。有的只是应用程序。
单内核具有许多极其重要的优势:
大小――不像虚拟机或容器,单内核只随带运行某一个应用程序所需要的资源。虽然容器比虚拟机来得小巧,可是体积仍相当大,要是你不注意底层的操作系统映像更是如此。可能拥有800MB大小映像的应用程序很容易变成不到50MB。这意味着,跨网络移动应用程序有效载荷变得非常实际。在云对数据进出收费的这个时代,这不仅可以节省时间,还可以节省资金。
速度――单内核启动速度快。最近实现的技术其单内核实例启动时间不到20毫秒,这意味着一接到网络请求,就可以联机启动单内核,立即处理请求。Anil Madhavapeddy领导的一个项目MirageOS正在致力于开发一个新的工具:Jitsu,让云可以迅速启动和关闭单内核。
安全性――系统安全方面的一大因素就是减少攻击面、降低复杂性,确保没有太多的办法来攻击和危及系统。鉴于单内核只将必要的部分编译到应用程序中,攻击面非常小。另外,单内核往往“不可改变”,这意味着一旦建好,想改变单内核,唯一的办法就是重建。没有补丁,也没有无法跟踪的更改。
兼容性――虽然大多数单内核设计专注于为能够按这种模式编译的特定堆栈编写新的应用程序或代码,但Rump内核之类的技术提供了将现有的应用程序作为单内核来运行这一功能。Rump内核的工作方式如下,将操作系统的各个子系统和驱动程序组件化,让它们可以编译到应用程序本身中。
这四大优点正好顺应微服务这个发展趋势,让拥有惊人性能的独立、可移植的应用程序实例成为现实。像Docker和CoreOS这些技术在更新我们使用基础设施的方式方面做得很到位,那样微服务就有望成为现实。但是这些服务需要改变和发展,才能在单内核兴起之后求得生存。
在未来五年,功能强大、简单易用的单内核会带来深远的影响,起码会补充我们目前所说的容器这项技术,说不定还会完全取代容器。但愿容器行业已作好了准备。
新闻来源:Gigaom|云头条翻译(未经授权谢绝转载)