转载来自:http://cloud.51cto.com/art/201410/453718.htm

摘要:Docker这种新的容器技术可谓热得发烫,因为有了它,人们就有可能让数量多得多的应用程序在同样的旧服务器上运行;有了它,人们也很容易封装和交付程序。本文旨在帮助你进一步了解Docker

如果你是数据中心或云计算IT圈子的人,这一年多来应该一直在听到普通的容器、尤其是Docker,关于它们的新闻从未间断过。Docker1.0在今年6月发布后,声势更是达到了前所未有的程度。

动静之所以这么大,就是因为许多公司在以惊人的速度采用Docker。在今年7月的开源大会(OSCon)上,我遇到了早已将服务器应用程序从虚拟机(VM)转移到容器的无数企业。的确,Docker公司主管服务和支持的副总裁James Turnbull在会上告诉我,其中有三家大银行一直在使用Docker的测试版,现已在生产环境中使用Docker。对任何早期技术来说,这无疑是极大的充满自信的举动,要知道它在安全至上的金融界几乎闻所未闻。

与此同时,Docker这项开源技术不仅仅是红帽和Canonical等Linux巨头眼里的宠儿。微软等专有软件公司也在热烈拥抱Docker。

那么,为什么大家都追捧容器和Docker呢?James Bottomley是Parallels公司的服务器虚拟化首席技术官,也是一位知名的Linux内核开发人员。他向我解释,Hyper-V、KVM和Xen等虚拟机管理程序都“基于虚拟化硬件仿真机制。这意味着,它们对系统要求很高。”

然而,容器却使用共享的操作系统。这意味着它们在使用系统资源方面比虚拟机管理程序要高效得多。容器不是对硬件进行虚拟化处理,而是驻留在单单一个Linux实例上。这反过来意味着,你可以“丢弃没有用的99.9%的虚拟机垃圾,剩下一个小巧简洁的胶囊式容器,里面含有你的应用程序,”Bottomley如是说。

据Bottomley声称,因此,借助经过全面调优的容器系统,你就可以在同一硬件上拥有数量比使用Xen虚拟机或KVM虚拟机多出四到六倍的服务器应用实例。

是不是觉得听起来很不错?毕竟,你可以让服务器运行多得多的应用程序。那么,为什么之前没有人做过呢?实际上,之前有人做过。容器其实是个旧概念。

容器可以追溯到至少2000年和FreeBSD Jails。甲骨文Solaris也有一个类似概念,名为Zones;Parallels、谷歌和Docker等公司一直在致力于研发诸如OpenVZ和LXC(Linux容器)之类的开源项目,旨在让容器运行起来顺畅又安全。

的确,很少有人知道容器,但大多数人多年来一直在使用容器。谷歌就有自己的开源容器技术lmctfy(Let Me Contain That For You,意为“让我容纳你的程序”)。只要你使用谷歌的某项功能:比如搜索、Gmail、Google Docks或无论其他什么,就分配了一个新的容器。

然而,Docker建立在LXC的基础上。与任何容器技术一样,就该程序而言,它有自己的文件系统、存储系统、处理器和内存等部件。容器与虚拟机之间的区别主要在于,虚拟机管理程序对整个设备进行抽象处理,而容器只是对操作系统内核进行抽象处理。

这反过来意味着:虚拟机管理程序能做容器做不了的一件事就是,使用不同的操作系统或内核。所以,举例说,你可以使用微软Azure,同时运行Windows Server2012的实例和SUSE Linux企业级服务器的实例。至于Docker,所有容器都必须使用同样的操作系统和内核。

另一方面,如果你只是想让尽可能多的服务器应用实例在尽可能少的硬件上运行,可能不大关心运行多个操作系统虚拟机。要是同一应用程序的多个副本正是你需要的,那么你会喜欢上容器。

改用Docker这一举措有望每年为数据中心或云计算服务提供商节省数千万美元的电力和硬件成本。所以难怪它们在一窝蜂地尽快采用Docker。

Docker带来了之前技术所没有的几个新特点。第一是,与之前的方法相比,Docker让容器部署和使用起来更容易、更安全。此外,由于Docker与其他容器领域的巨擘进行了合作,包括Canonical、谷歌、红帽和Parallels,共同开发其关键的开源组件libcontainer,它为容器带来了迫切需要的标准化。

与此同时,广大开发人员可以使用Docker封装、交付和运行任何应用程序,应用程序成为轻型的、可移植的、自给自足的LXC容器,可以在任何地方运行。正如Bottomley告诉我,“容器让你立即享有应用程序可移植性。”

市场研究公司451 Research的资深分析师Jay Lyman补充道:“企业组织力求以一种高效、标准化、可重复的方式,让应用程序和工作负载更易于移植和分发,而有时很难做到这点。正如GitHub通过共享源代码来促进合作和创新那样,Docker Hub、Official Repos和商业支持也在帮助众多企业通过改进封装、部署和管理应用程序的方式,应对这个难题。”

最后但并非最不重要的,Docker容器易于部署到云端。正如Ben Lloyd Pearson在opensource.com上写道:“Docker采用了一种特别的方式,以便可以整合到大多数DevOps(开发运营)应用程序当中,包括Puppet、Chef、Vagrant和Ansible,或者可以独自使用,以管理开发环境。主要卖点是,它简化了通常由另外这些应用程序执行的好多任务。具体来说,有了Docker,人们就可以搭建与活动服务器一模一样的本地开发环境,从同一个主机运行多个开发环境(每个开发环境有独特的软件、操作系统和配置),在新的或不同的服务器上测试项目,以及让任何人都可以在设置一模一样的情况下处理同一项目,无论本地主机环境怎样。”

简而言之,Docker能为你做的事情就是:相比其他技术,它能让更多数量的应用程序在同一硬件上运行;它让开发人员易于快速构建可随时运行的容器化应用程序;它大大简化了管理和部署应用程序的任务。总而言之,我能理解作为一项企业级技术,Docker为何一下子蹿红。我只是希望它不负众望,否则外头会有一些忧心忡忡的CEO和CIO。

英文:http://www.zdnet.com/what-is-docker-and-why-is-it-so-darn-popular-7000032269/

Docker到底是什么?为什么它这么火!的更多相关文章

  1. 人均年薪50万以上,docker到底是什么?为什么这么火?

    为什么要使用Docker? 场景一:公司双十一买了一堆服务器,技术总监让你给它们一个个都配置上JDK.Mysql.Redis等软件环境. 你心里小声嘀咕:"这总监不讲武德!"然后你 ...

  2. docker到底比LXC多了些什么

    看似docker主要的OS级虚拟化操作是借助LXC, AUFS只是锦上添花.那么肯定会有人好奇docker到底比LXC多了些什么.无意中发现 stackoverflow 上正好有人问这个问题, 回答者 ...

  3. [转]Docker到底是什么?为什么它这么火?

    如果你是数据中心或云计算IT圈子的人,这一年多来应该一直在听到普通的容器.尤其是Docker,关于它们的新闻从未间断过.Docker1.0在今年6月发布后,声势更是达到了前所未有的程度. 动静之所以这 ...

  4. 3分钟,9个Q&A让你快速知道Docker到底是什么

    不论是Google.Amazon.Microsoft.VMware都纷纷拥戴,加入Docker和Container所掀起的新时代云端虚拟化行列,这两项技术成为了IT界的新趋势.Docker和Conta ...

  5. Docker到底是什么

    简单讲docker和vm虚拟机类似,都是在同一硬件上虚拟化出多个服务器应用实例的功能,据Bottomley声称,借助经过全面调优的容器系统,你就可以在同一硬件上拥有数量比使用Xen虚拟机或KVM虚拟机 ...

  6. 推荐 2 款超牛逼、炫酷、实用的Docker管理工具!

    Docker技术的火热程度,想必每个互联网IT技术人员都能时时感受的到,的确,近些年,国内对于Docker容器技术的应用需求越来越强烈!! 人均年薪80万以上,docker到底是什么?为什么这么火? ...

  7. Docker,容器,虚拟机和红烧肉

    Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...

  8. 数据科学家Docker历险记(1):windows下环境搭建

    原文:http://www.xueqing.tv/cms/article/247 Docker是最近炒得很火热的一门技术,在网上可以找到关于它的介绍文章,比如<Docker到底是什么?为什么它这 ...

  9. 沉淀,再出发:docker的原理浅析

    沉淀,再出发:docker的原理浅析 一.前言 在我们使用docker的时候,很多情况下我们对于一些概念的理解是停留在名称和用法的地步,如果更进一步理解了docker的本质,我们的技术一定会有质的进步 ...

随机推荐

  1. x:bind不支持样式文件 或 此Xaml文件必须又代码隐藏类才能使用{x:Bind} 解决办法

    这两天学习UWP开发,发现一个很有趣的问题,就是我题目中的描述的. 我习惯了在ResourceDictionary中写样式文件,但是发现用x:Bind时会有问题 如果是写在Style里,则提示 “x: ...

  2. Android公共title的应用

    我们在开发Android应用中,写每一个页面的时候都会建一个title,不是写一个LinearLayout就是写一个RelativeLayout,久而久之就会觉得这样繁琐,尤其几个页面是只是标题不一样 ...

  3. Discuz NT 架构剖析之Config机制

    接触了Discuz NT! 一段时间了,是时候做个总结了,标题好霸气,有木有? 都是托园子里的大牛代振军的福啊,哈哈哈哈. 首先论坛的信息不是完全存储在数据库里面的,一部分信息存储在config文件里 ...

  4. 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新

    微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...

  5. gRPC源码分析1-SSL/TLS

    引子 前几天看到微信后台团队分享了TLS相关文章,正好gRPC里TLS数据加密是很重要的一块,于是整理出了这篇文章. 在gRPC里,如果仅仅是用来做后端微服务,可以考虑不加密.本文太长,先给个大纲. ...

  6. iOS 数据存储之SQLite3的使用

    SQLite3是iOS内嵌的数据库,SQLite3在存储和检索大量数据方面非常有效,它使得不必将每个对象都加到内存中.还能够对数据进行负责的聚合,与使用对象执行这些操作相比,获得结果的速度更快. SQ ...

  7. Linux命令【第三篇】

    执行下面命令时发现提示需要输入密码,请问提示输入的密码是哪个用户的密码. [test@oldboy ~]$ sudo su - oldboy 解答: 输入当前执行命令test账户的密码. 相关说明: ...

  8. 1 selenium3.0.1无法打开火狐浏览器

    [问题描述] 1.配置selenium3.0和java后,尝试打开火狐浏览器,提示缺少geckodriver驱动. [解决方案] 1.在http://www.seleniumhq.org/downlo ...

  9. embedding mono实战笔录(一)

    最近在给自己的服务器节点添加脚本功能,考虑到 执行性能.开发效率.调试效率.可维护性.严谨性 五大要素,最终选用C#作为脚本语言,并使用mono作为中间层,使其具备跨平台特性,以备具有在Windows ...

  10. [httpserver]如何解析HTTP请求报文

    这个http server的实现源代码我放在了我的github上,有兴趣的话可以点击查看哦. 在上一篇文章中,讲述了如何编写一个最简单的server,但该程序只是接受到请求之后马上返回响应,实在不能更 ...