新的技术,新的机遇
我们经常发现,一些新技术的出现总会吸引大量的目光。我们都应该知道接下来会发生什么,这些新技术都将成为大大小小公司的关键基础设施。
Hadoop, MongoDB, 和Node.js 已经走过了这条路子了(当然还有其他许多技术)那么接下来在2013年中,最有可能走上这条路子的技术应该就属Docker容器了。
原理
Docker是基于一个21时间初出现的一个开源项目Linux容器(Linux container),Linux容器(Linux container)是将应用相互独立地运行在单独的服务器上。
但是一个也叫Docker的公司(原来公司名称是DotCloud,后改名为 Docker)将Linux容器(Linux container)这项技术,优化得更容易实现而且更加有用,也就是现在的Docker容器。
通过Docker,Linux容器(Linux container)发展成为一个优秀的工具,它可以帮助开发者可以轻松地将应用,从测试环境转移到生产环境中,然后从一个云端转移到另外一个云端,这些过程甚至都无需修改任何代码。
对比虚拟机
在某种程度上,Docker容器有些和虚拟机相似。
但是 Docker 容器更加轻量化,而且需要更少的 CPU 和内存资源。
此外,构建容器的代码对开发者都是可见的,该项目是在 Apache 开源项目许可之下。
在三月份Docker已经可以自由获得,许多创业者们已经将产品部署在Docker之上了。
有时这被称为“Docker-as-a-Service” 其中包括 Orchard 和Copper.io’s StackDock。
企业中的应用
许多大公司也开始积极地拥抱Docker容器,在早期构建面向公众的基础架构即服务(IaaS)的云平台上,Google声称会加入对于操作系统软件的支持,包括Docker。Red Hat也开始着手加入Docker大军,在最新的RedHat企业版7的Beta版中加入对Docker的支持。
CenturyLink正在计划构建下一代云计算的平台,一个称为CTL-C的项目和Docker很有可能唱主角。
高速增长的IaaS服务提供商DigitakOcean,开发了一个可以在他们的虚拟服务器Droplet中,启动Docker容器的应用。
VMware,一个虚拟机阵营最强大的公司,已经在自己的产品中提供了对于Docker的支持。
其中包括vSphere,这是在物理服务器上运行的虚拟机。
此外还包括 vCloud Hybrid Service ,VMware公司的公共云服务,该服务需要连接企业本地的数据中心。
尽管该公司对于Docker,好像还没有发表正式声明,但是该公司的一位女发言人声称他们已经给VentureBeat发了封电子邮件。
最近的例子来自中国。中国搜索公司百度,他们声称百度的平台即服务 (PaaS)产品百度App Engine,已经是基于Docker了。
根据上周发布的Docker文章中,百度解释了他们之所以选择Docker容器的原因是,百度需要支持多种编程语言和框架。此外还要希望实现一个比传统沙盒模型更低成本的开发部署服务。
Docker 能做什么
Docker在商业化应用中,不单单只是个开源工具。许多大公司的工程师已经开始探讨,如何使Docker适用于公司关键的工作流中。
在eBay,,公司的速递服务,依靠Docker容器开发和测试,以及生产使用的环境即将到来。
这是eBay的资深技术人员Ted Dziuba,在7月一次Docker活动讲话中提到的。
“一个容器,到处运行” ,他认为,只要开发者了解如何让容器彼此连接,那么,开发者的工作更加简单。
在RelateIQ,这是一个提供顾客人际关系的初创公司,他们已经可以在Docker容器中轻松部署丰富的开发环境了。
John Fiedler,公司的IT部门职员,在他最近发表在Docker博客帖子上的两篇博客中,指出公司将要在生产环境中使用Docker 。
俄国搜索公司 Yandex借助Docker容器,将他们的Paas服务中的应用孤立化,该服务名为Cocaine。
Yandex使用Cocaine在满足内部需求的同时,还作为一个平台,来向用户提供自己的浏览器的服务。
Rackspace电子邮件服务的开发者,Mailgun和CloudFlare也已经公开讨论Docker。
虽然开发者非常喜欢容器模型,但是你要明白的是,可是特别对于Docker的版本,还处于开发版本状态。公司已经开始谨慎地对待Docker了。
仅仅在几个月之内就发生这么多关于Docker的事情。
开发Docker容器的公司,也公开了源码,好让开发者可以检验其正确性。
Docker容器开始是dotClode公司的内部技术,用了支持提供PaaS服务的。
Docker的首席执行官Ben在VentureBeat的采访中说道。
在dotCloud的工程师使用Linux容器的同时,也使用其他开源技术。
比如称为cgroups和namespace的Linux内核特性。这样的容器不会太过于复杂。
“如果你使用LXC(Linux容器)那么会有一堆特别的语言需要学习”他说道。 “但是我们提供了一个标准的API(程序开发接口),这使得开发者更容易在容器内部署和打包应用。此外也方便系统管理员,可以在一台服务器上运行10个或100个甚至更多的容器。”
在我们采访谈话结束之后,Golub发了封电子邮件解释了他们对于该技术的一些需求,同时也介绍了dot Cloud以外的广大用户的需求:
在运行dotCloud的PaaS期间, 我们有大量的用户应用在使用我的设备。
数量繁多的"stacks"运行在我们的共享宿主机器上。
在某种程度上,这简直就是一个小版本的“地狱矩阵”,那儿你有大量的应用,各种语言,不同的框架。
同时在大量不同的服务器之间,还需要高效,稳定和安全的协作。我们通过使用容器技术来管理这么一个环境,也就是这个技术最后发展成为Docker。
在我们运行dot Cloud期间, 用户的需求是很清楚的,他们不仅仅只需要大量的stack环境,而且还有任意使用stack的能力。
用户希望他们的应用不仅能运行在我们的设备上,而且可以在任何设备间轻松转移,不管设备是共有,还是私有,是虚拟,还是真实,都可以做到灵活转移并运行他们偏向的操作系统。
此外,他们还希望我们能够整合他们选择的相关技术,比如:Chef, Puppet, Salt, OpenStack 等等。
据我所知没有任何公司可以提供如此包罗万象的解决方案,但是,我们可以提供一个能够满足上述需求的环境。这就是Docker的源起。
前景
现在Docker已经是 “无法想象的成功” Golub描述道。
难怪在十月份,公司会改变名称,用Docker替代原来的公司名dotCloud。
“我觉得我们偶然遇到了一些奇妙的东西,它们可以让开发者,系统管理员,CIO以及在痛苦”地狱”中的每个人都变得更加轻松 ” Golub解释道。
该公司不会只提供开源技术,它们仍然提供PaaS服务。但是明年,它们会通过新的途径,获取Docker容器的利润。
“一般来说,容器一处构建,到处运行。因此你需要一个中心服务器来承载Docker容器,首先将容器上传到中心服务器,然后需要该容器的就会下载到本地” Golub说道。
托管服务可以担此重任,应该最先考虑。
管理工具可以帮助管理员跟踪容器运行的地点,创建者是谁,以及当前性能如何。
公司也希望通过提供专业的服务来带来利润,比如为Docker容器使用者提供技术支持,然后收取一定服务费用。
也可以通过与其他公司合作,这些公司使用Docker容器来销售自身服务,这也是一种盈利手段。
Golud说,不管容器的突破性进展,能够带来多少的现金流,稍微停下一会,回顾自己的努力是非常值得的,特别是承认这一年来公司如此大规模地贡献应用开发的努力。
参考资料
Docker如何将错综复杂的Linux代码转成开发者的魔法