刘思尧 李强 李斌
摘要:Docker的核心思想是利用扩展的LXC(Linux Container)方案实现一种轻量级的虚拟化解决方案。Docker主要利用kernelnamespace来实现容器的虚拟化隔离性,保证每个虚拟机中服务的运行环境的隔离。Docker的隔离机制降低了内存开销,保证了虚拟化实例密度。本文从Docker的工作原理出发,详细分析了Docker的虚拟化隔离技术和容器隔离方案的实现。
关键词:Docker;LXC;虚拟化;隔离性
中图分类号:TP311 文献标识码:A DOI:10.3969/j.issn.1003-6970.2015.04.025
0.引言
Docker是PaaS提供商dotCloud开源的一个基于LXC(Linux Container)的应用容器引擎,让开发者可以将应用程序、依赖的运行库文件打包并移植到一个新的容器中,然后发布到任何系统为Linux的机器上,也可以实现虚拟化解决方案。容器是完全沙箱机制的实现方式,任意容器之间不会有任何接口,具有安全访问资源的特性,可以实现系统的隔离;而且容器的运行资源开销小,可以很容易地在机器和数据中心中运行。最重要的是Docker容器不依赖于任何特定需求实现的编程语言、编程框架或已打包的系统。Docker目前在业界非常受欢迎,包括dotCloud,Google Compute Engine和百度应用引擎(BAE),都使用了Docker。
LXC是一种共享Kernel的操作系统级别的虚拟化解决方案,通过在执行时不重复加载内核,且虚拟容器(container)与宿主机(Host)之间共享内核来加快启动速度和减少内存消耗。Docker扩展了LXC特性并使用高层的API,提供轻量级虚拟化解决方案来实现所有容器间的隔离机制。
Docker具有LXC轻量虚拟化的特点,相比较传统的虚拟化,可以做到启动快且占用资源少。本文首先介绍了虚拟化技术,然后阐述了Docker的总体系统结构以及每个功能模块的工作原理,最后重点描述Docker的隔离性。
1.虚拟化技术
虚拟化技术是通过虚拟机监视器(virtual machinemonitor,VMM)对底层硬件资源进行管理,支持多个操作系统实例同时运行。虚拟化技术的目标是实现资源利用率的最大化,同时将底层的物理设备与上层操作系统应用软件分离,从而实现计算资源的灵活性。对于大型的实验或软件设备,使用虚拟化技术能充分利用高性能的硬件资源,而且有利于设备的综合管理和维护。虚拟化已经在仪器仪表测量技术有运用,在虚拟仪器、自动化测试中,已有很多已经虚拟化的虚拟仪器测量和实验环境。endprint