BT

Docker:具备一致性的自动化软件部署

作者 Abel Avram ,译者 李彬 发布于 2013年4月11日 | 注意: 挥一挥衣袖,带走满满干货,关注活动大本营,时不时发福利呦!

PaaS供应商dotCloud开源了自有平台上的关键组件Docker。Docker是一种增加了高级API的LinuX Container(LXC)技术,提供了能够独立运行Unix进程的轻量级虚拟化解决方案。它提供了一种在安全、可重复的环境中自动部署软件的方式。

Docker使用标准化容器的概念,能够容纳软件组件及其依赖关系——二进制文件、类库、配置文件、脚本、Virtualenv、jar包、gem包、原始码等——而且可以在任何支持cgroups的64位(针对x64)Linux内核上运行。这样的容器可以部署在笔记本、分布式基础架构、云端或是其他地方,其对环境的保留适用于广泛的用途:持续部署、Web部署、数据库群集、SOA等等,对此,Mike Kavis在他的博客中这样描述

作为应用开发者,与我相关的用例是使用Docker以简化持续交付过程。在我职业生涯中工作过的每个地方,在那些从大型机到客户端再到云端的岁月里,让不同的环境保持同步并成功测试应用简直是个噩梦。无论我们的流程有多好或者有多糟,在“Dev-QA-Stage-Prod(开发-质量保证-过渡-生产)”的迁移过程中的各个阶段里,代码从来就没有处于相同的环境。最后的结果就是,发布的产品总是出现质量问题。“它在测试阶段是好的”是仅次于“支票已经寄出了”(译者注:the check is in the mail为美国俚语,意指某件应该发生某事但实际情况却与之不符,最早是债务人用于缓和债权人的愤怒情绪的一种借口)的推脱借口。

在持续交付(CD)过程中,整个环境随着代码一起在“Dev-QA-Stage-Prod”的不同阶段间迁移。配置问题,系统环境不同的问题,借口都将不复存在。在CD过程中,如果代码在产品阶段出问题,那么在测试阶段也一样有问题。使用Docker的过程中,我知道能够通过编写脚本实现CD流程的自动化。我还知道,因为无需处理所有的安装和配置问题,随着创建新环境的速度加快,产品进入市场的速度也得到了提升。

dotCloud的CEO Solomon Hykes在PyCon上演示了Docker,宣称它是可重复的轻量级虚拟化解决方案,因为“它在进程层面是独立的,而且拥有自己的文件系统”。其API允许系统管理员对容器进行一系列操作:开始、停止、复制、等待、提交、关联标准流、列出文件系统变更等等。

Docker的主要特性如下:

  • 文件系统隔离:每个进程容器运行在完全独立的根文件系统里。
  • 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
  • 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
  • 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
  • 日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
  • 变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
  • 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。

目前,Docker已在Ubuntu 12.04和12.10测试过,但dotCloud表示它应该能够在内核版本号2.6.24或更高的Linux上运行。它还可以在Windows或Mac OS X中,使用VagrantVirtualBox的虚拟机里安装。Docker是用Go语言编写的,并使用了Linux的 cgroupnamespacing、支持写时复制特性的AUFS文件系统以及LXC脚本。

查看英文原文:Docker: Automated and Consistent Software Deployments


感谢康锦龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论
提供反馈
错误报告
商务合作
内容合作
Marketing
InfoQ.com及所有内容,版权所有 © 2006-2016 C4Media Inc. InfoQ.com 服务器由 Contegix提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司 京ICP备09022563号-7 隐私政策
BT