容器技术在过去一年中取得了令人瞩目的关注度,无论是个大技术论坛还是个大公司都对Docker投入了巨大的热情。 随后出现的CoreOS和Docker一样都是容器技术的重要组成部分,它们确实在操作系统功能特色方面做了很大的改变。
容器技术是的封装和分发应用程序非常容易,特别是基于基础设施云模式的应用场景中。容器相比它的前辈:虚拟机技术而言,更加的快速和简便,能够提供更快地启动时间和保持合理的隔离特性,确保机遇共享的基础设施上的不同应用能够有效的隔离和提供安全防护。容器也被优化用于在单一操作系统实例上用安全和兼容的模式运行多个应用程序。
那么问题有没有呢? 有。
传统的操作系统体积是比较大的,即使通过一些手段和技术瘦了下来,也相对来说比较重量级。如果你看看一个容器实例会发现只有几百兆大小,在托管应用方面,容器的优势是显而易见的。
而一个操作系统的副本意味着所有操作系统的服务和子系统,无论这些服务和子系统是必要的还是不需要的。这巨大的体积的冲突与更广泛的云市场的“微服务”发展趋势是相悖的,现在的服务发展趋势即要求提高安全性的需要,有要求一切操作尽可能快的完成。
因此,现在在传统的操作系统的容器技术可能会被新的技术取代,例如无核化UniKernels。Docker容器推荐一个容器一个服务single-service-per-container (microservices)的概念,而无核化UniKernel则会将这个想法带得更远。
无核化UniKernel允许你将所有包括操作系统都考虑到你的应用程序的编译和打包中,比如,如果你应用不需要持久磁盘的访问,那么设备驱动程序和OS有关磁盘使用的工具就可以不包含在生产Imag中,因为UniKernels 是为运行Xen等虚拟管理程序而设计的,它们只需要网络和磁盘的一些标准资源的接口,用于显示的数千个设备驱动 磁盘驱动等等都是不需要的。由此,生产系统变得最小化,只是需要应用代码 运行环境和应用必须的OS工具等等必备的,VM image文件变得更小,部署变得更快