http://www.zhihu.com/question/22969309
根据Docker布道师Jerome Petazzoni的说法,Docker约等于LXC+AUFS(之前只支持ubuntu时)。其中LXC负责资源管理,AUFS负责镜像管理;而LXC又包括cgroup、namespace、chroot等组件,并通过cgroup进行资源管理。所以只从资源管理这条线来看的话,Docker、LXC、CGroup三者的关系是:cgroup在最底层落实资源管理,LXC在cgroup上封装了一层,Docker又在LXC封装了一层。
Docker是Linux下应用容器引擎,提供一种比LXC高级的API。Docker使用Go语言开发,利用了Linux提供的LXC,AUFS,namespace和cgroup技术。实现了文件系统,资源和网络的隔离,最终目标实现类似PaaS平台的应用隔离。
LXC——Linux容器工具,容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心 CPU 本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。
容器在提供隔离的同时,还通过共享这些资源节省开销,这意味着容器比真正的虚拟化的开销要小得多。
我们都知道Linux有一个进程号为1,名字为init的进程,系统服务的父进程都是init进程。
Docker容器中进程号为1的进程是bash,而不是init,一个运行的Linux竟然没有init进程,简直太不思议了。这其实得益于强大的Linux提供的LXC功能。宿主机器中运行的docker服务就是该容器中ubuntu系统的init进程。其实每个运行的容器仅仅是宿主机器中运行的一个进程而已,在容器中运行的任何程序其实也是运行在宿主机器中的一个进程。Docker通过cgroup将属于每个容器的进程分为一组进行资源(内存,cpu,网络,硬盘)控制;通过namespace将属于同一个容器的进程划分为一组,使分属于同一个容器的进程拥有独立的进程名字和独立分配的进程号,比如宿主机器存在一个进程号为1的进程,容器中也存在一个进程号为1的进程。
如果对同一台服务上的少数应用需要控制资源的直接使用 cgroup 是较好的选择,可以按用户或用户组控制系统资源。如果服务需要指出多种环境,那么 Docker 就是最好的。
补充(20140625):
With the release of version 0.9 Docker.io have dropped LXC as the default execution environment, replacing it with their own libcontainer.
In other words, as of Docker 0.9, LXC is now optional.
by: Docker drops LXC as default execution environment
感谢 @Honglin Feng 提醒。
DaoCloud产品目前涵盖以下三个领域,目前完全免费:
1. DaoCloud应用管理平台,云端原生应用的一站式解决方案
快速迭代,持续发布,微服务架构和容器化交付是云计算时代互联网应用的发展趋势,DaoCloud应用管理平台对接GitHub、Bitbucket、Coding、GitCafe、OSChina等国内外代码托管库,无
缝完成持续集成,容器镜像构建,镜像托管和云平台资源调配。DaoCloud采用标准化容器技术缩短应用交付周期,降低发布风险,更高效利用IaaS云主机资源。
2. DaoMirror镜像服务,Docker Hub官方中国区镜像服务
Docker Hub汇集了数以万计的各类应用镜像,是学习和使用Docker技术不可或缺的重要资源。由于国内网络的特殊情况,程序员在访问Docker Hub下载镜像时,经常出现连接超时,或下载缓慢的问题。DaoMirror采用Docker官方镜像技术,结合国内CDN网络,为开发者提供透明和高速的镜像下载解决方案。DaoCloud最近对外宣布DaoMirror服务永久免费。
3. DaoStack企业服务,企业级Docker服务,专攻私有云和混合云场景
在移动互联网的浪潮下,企业不断思考如何与云平台对接,如何让应用拥抱互联网用户。DaoStack企业服务涵盖技术咨询、培训服务和定制解决方案,帮助企业快速掌握容器技术,建立以容器为核心的高效开发测试流程,与企业现有私有云资源对接,搭建容器管理云平台,让企业从容应对云端挑战。
互联网金融、IT能力变革、快速交付......这些关键词很好地总结了当前银行IT所面临的现状。作为国内最具品牌影响力的商业银行之一,招商银行不仅在业务层面层不断创新,在IT方面,招行也在持续创新,尝试通过新的技术和方案来更好地实现互联网金融时代的转型。招行提出的问题,也印射了国内银行业的现状。
互联网金融时代银行IT变革之殇用户就是最好的产品经理,这是互联网领域非常时髦的一句话。互联网金融的冲击让银行业不得不开始重视用户体验和用户需求,如此才能在互联网+的浪潮中更好地生存。从IT的角度来看,就要求银行IT快速响应业务的需求。这是一个关乎银行业生存和发展的问题,因此,这场变革不是一个选择题,而是必然的过程。然而,任何一场变革都不是一个容易的过程,在这场互联网金融引发的银行业变革中,银行的IT也面临着诸多的挑战:
传统瀑布模型的低效:传统的金融行业的开发流程是典型的瀑布模型,也就是开发、测试、运维分为独立的几个阶段和部门,长此以往,各个部门之间必然会导致隔阂,从而导致部门之间的沟通成本过高、协作效率低下,并且容易出错。更严重的是,很多企业的运维部门和开发部门甚至成为死敌,运维出现了问题,经常会指责开发部门。
IT架构转型“阵痛”明显:变革是必然的,而变革的方式确实可以选择的。银行传统的“烟囱式”系统架构要向分层的云架构转型,传统的虚拟化解决方案往往需要将整套系统推到重建,还需要对应用软件进行修改,这种“伤经动骨”的方式给银行IT带来的“阵痛”让他们难以接受,是否有更缓和的解决方案?
复杂系统的运维压力增大:高可用性和可靠性是银行IT系统的基本需求,据业内人士透露,银行业务出问题超过1个小时,银行行长可能就要下台。因此,整个银行的运帷部门也是压力最大的部门,经常晚上被叫醒处理各种事故。然而,随着系统复杂度的增加,运维部门的压力越来越大。
IT资源浪费严重:为了应对互联网金融的挑战,银行非常愿意花大价钱投资新的技术和方案,比如虚拟化、云计算等等。然而,这些投资有多少能够真正帮助他们分忧解难?还是最终沦为“样子工程”?
Docker标准化应用交付件 助力银行IT渐进式变革这是一个最坏的时代,这是一个最好的时代。如果说互联网金融的出现是金融IT的梦魇,那么Docker容器的出现就是金融IT的曙光。正如文章开头招行罗文江提到的,“Docker很好地降低了这件事情的难度。”
为什么银行的IT管理人员会对Docker抱有如此大的希望?Docker究竟有什么能耐,可以让让这一切变得简单呢?国内领先的容器云平台和企业解决方案提供商DaoCloud联合创始人兼CEO陈齐彦认为,Docker最大的法宝在于——将所有的应用交付件统一为容器。
标准化意味着高效,比如螺丝钉的标准化极大地提升了制造业的生产效率,应用交付件的标准化于计算领域而言,也必将是一次效率的飞跃。这也是为什么Google认为——容器是计算的未来。
如果把企业IT分为两个阶段——应用交付前和交付后,这两个阶段的分界线是应用开始上线部署的那一刻,之前的开发、测试等工作都视之为交付前,此后的过程视之为交付后。然后,再回头看一下前面提到的银行业IT变革的痛点,无非就是体现在两个方面:一个是交付前如何快速地进行软件交付,另一个是交付后如何更好地进行系统的管理和运维。针对不同的阶段,DaoCloud都提供了相应的解决方案,帮助企业用户应对不同场景的挑战。
首先,我们看看DaoCloud解决方案如何改变交付前的痛点。过去,开发、测试和运维分别交付不同的内容,比如软件代码、软件测试包等,每个阶段的交付件都不同,这就导致沟通成本高,协作效率低。这样的软件生产和交付方式当然已经不能适应这个追求“快”感的时代。Docker定义了一个软件交付的标准件——无论是开发、测试还是运维,交付的都是容器。通过镜像仓库进行协作,无论是开发测试还是生产都是基于镜像仓库进行操作,交付出来的容器镜像进入了仓库,根据业务需求不断从里面去拿新的版本,进行测试、上线等等。在这个过程中,通过tag来区分镜像的版本。另外,开发人员还可以选择在代码调整之后,自动进行用例测试、生成镜像、部署上线,极大地提升了迭代的效率
再看看交付后DaoCloud解决方案能做什么。前面提到的IT架构转型“阵痛”,复杂系统的运维、IT资源浪费都可以说是交付后的痛点。
由于Docker是通过容器的方式来交付应用,企业可以根据需要对应用进行逐步容器化,然后像搭积木的方式一样,一个一个搭起来。这样循序渐进的方式相比伤筋动骨的大跃进方式,更适合银行IT的架构转型,也可以帮助银行很好地保护既有投资。
对于复杂系统的运维问题,Docker容器是非常轻量级的,应用的启动是秒级,所以当一个容器镜像挂了,可以秒起另一个容器镜像,几乎没有downtime,这极大地提升了系统的可用性。也正是因为这个原因,容器被称之为“魂器”,意味着永不死机。
此外,对于虚拟机和物理机共存的IT环境,容器还有一个好处是,既可以在虚拟机上运行,又可以在物理机上运行,因为容器是基于Linux内核的代码集,进一步保护了企业的投资。
作为国内领先的容器云平台和企业解决方案提供商,DaoCloud提供了公有的一站式容器化应用云平台,在经过大量的测试、运营和迭代之后,DaoCloud面向企业用户推出了私有的容器云平台解决方案,帮助企业用户应对互联网+给IT带来的挑战,并获得了金融、政府等行业用户的高度认可。
DaoCloud联合创始人]联合创始人陈齐彦的一句话来结束本文,“容器云平台将会迎来在企业市场的爆发式增长,因为它给企业带来了巨大的价值,又不像其他的新技术那样给企业IT带来变革的“阵痛”。”
显示全部