昨天我们谈到了资源管理中资源隔离技术LXC,linux轻量级的隔离技术。今天介绍一个基于LXC技术发展的开源应用容器引擎:Docker。
什么是Docker:
Docker container和普通的虚拟机Image相比, 最大的区别是它并不包含操作系统内核.普通虚拟机将整个操作系统运行在虚拟的硬件平台上, 进而提供完整的运行环境供应用程序运行, 而Docker则直接在宿主平台上加载运行应用程序.本质上他在底层使用LXC启动一个Linux Container,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等
基本上你可以认为目前的Docker是LXC的一个高级封装,提供了各种辅助工具和标准接口方便你使用LXC,你可以依靠LXC和各种脚本实现与docker类似的功能,就像你不使用APT/yum等工具也可以自己搞定软件包安装一样,你使用他们的关键原因是方便易用!
值得关注的特性:
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
Docker的发展:
DOCKER已经可以运行在mesos上,并可以结合chronos和marathon框架。Docker on Mesos相关资料可以参考http://mesosphere.io/2013/09/26/docker-on-mesos/。
DOCKER和YARN的集成,也很快就能完成。Hadoop初创企业Altiscale将把Docker变成运行Hadoop任务的一个合适环境作为自己的使命,而且已经接近完成。 http://gigaom.com/2014/08/29/hadoop-jobs-should-soon-be-able-to-run-easily-inside-docker-containers/
InfoQ开设专栏专门关注docker的发展http://www.infoq.com/cn/dockers/?utm_source=infoq&utm_medium=header_graybar&utm_campaign=topic_clk
Docker的未来非常值得期待!