其他分享
首页 > 其他分享> > Docker

Docker

作者:互联网

Docker

介绍

Docker是PasS提供商DoctCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker近期非常火热,无论是从Github上的代码活跃度,还是Redhat在REHEL6.5中集成对Docker的支持,就连Google的Compute Engine也支持docker在意之上运行,百度、阿里、新浪、京东也开始使用Docker作为PaaS基础。

某款开源软件能否在商业上成功,很大程度上依赖三件事-成功的User case,活跃的社区和一个好故事。DotCloud在自家的PaaS产品上建立在docker之上,长期维护且有大量用户,社区十分活跃,接下来我们看看docker 的故事。

如图所示:

 

 

面对上面的问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后标准化组件是用户的app),这也就是基于docker的PaaS产品的原型。

在docker的网站上提到了docker的典型场景:

由于docker基于LXC轻量级的虚拟化特点(0.9之后不是基于LXC,但还是支持的),docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离性的标准化的运行环境,轻量级的PaaS(如dokku),构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。

(1)构建标准化的运行环境,现有方案大多是在一个base OS上运行的一套puppet/chef,或者一个image文件,期缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write的文件格式在运行时rootfs是read only),并且后者文件体积大,环境管理和版本控制本身也是一个问题。

(2)PaaS环境是不言而喻的,其设计之初和DotCloud的案例都是将其作为PaaS产品的环境基础

(3)因为其标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来

(4)由于LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样的资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源

原理

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。同VM的方式不同, LXC其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化到docker要解决的问题出发,看看他是怎么满足用户虚拟化需求的。

用户需要考虑虚拟化方法,尤其是硬件虚拟化方法,需要借助其解决的主要是以下4个问题:

局限

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:

标签:container,虚拟化,用户,LXC,Docker,docker
来源: https://www.cnblogs.com/Aimmi/p/15628446.html