Docker时代来临,你的团队准备好了吗?

jopen 9年前

 

长久以来,软件测试团队等待着一个合适的测试版本已经是个老问题,开发环境、测试环境、生产环境之间的差异,总会导致生产版本有缺陷被遗漏。虚拟 机的出现解决了这些问题,但是同时也带来了性能的下降,还有磁盘的大量浪费。这时候,Docker出场了,它是Linux下一款轻量且高性能的虚拟化工 具。希云作为Docker领域专家,期待docker能给您的开发团队带来巨大价值。

Docker带来的机会

首先,技术团队中任何人都可以迅速在本地创建一个测试环境,只需要在已有的操作系统下启动新的进程,所以不需要系统的启动。如果基于一个旧版本的镜像创建,Docker可以只加载两个构建之间的差异。

这种易用性让很多团队都采用了Docker方案,如果这种部署架构延伸到生产环境,那生产环境的部署也能变得这么简单。

另一个高明的做法是这样,把一些纯净的虚拟化集群部署到数个虚拟机上,把部署的这个版本称为"green"构建,所有的回归测试都在这个"green"构 建中实施,相当于生产环境的一个副本。当测试完成后,只需用一个脚本调整这些服务器,那这些"green"构建就变成了生产环境。前一个构建的版本,可以 保留着,以备需要回滚操作。这种部署方式称为 "blue/green"部署 ,可以用好几种技术实现。Docker使得这种方式更简单了。

为什么选Docker?

基于Windows的软件可以被编译成一个单独的安装包,而基于Web的软件交付的方式完全不同:构建出的软件须运行在服务器上。网站的典型发布 流程涉及起码三到四层:开发环境,测试环境,生产环境,有时还会有准生产环境,这种方式每层都至少包含一台服务器。并且每层的升级通常有固定的发布规则, 一旦软件满足某种条件,就会被部署到下一层的环境中。

虚拟机使这种情况发生了变化,能让服务器的数量和开发团队的人数一样多。这样就可以让每个分支都独立测试,最后才合并到主版本以供集成测试,这种 方案可以省下大量采购新三件的费用。使用虚拟机也能让开发人员在本地调试生产环境出现的问题,同时测试人员也可以在另一台机器上重新测试一个补丁;一个测 试人员回归测试着即将发布的版本,而另外五个测试人员测试着下一版本的特性,还可以有五个开发人员在开发着新的分支。

虚拟机的问题是容量和性能,每个虚拟机都需要包含着整个操作系统,新建一个虚拟机意味要多分配数GB的硬盘空间,用以创建一个全新的操作系统,才 能把构建的应用部署到这个操作系统中。更糟糕的是,这个操作系统需要运行在宿主系统的用户空间,这样相当于在一个操作系统上跑着另一个操作系统。启动或者 安装一个新的应用到虚拟机中,通常都需要数分钟甚至一小时,这样很容易打断原有的工作计划。技术人员的电脑上很可能只能装上一到两个虚拟机,这样才能避免 严重的性能下降。后来出现的“私有云计算”,就是这种方案延伸到在网络上使用虚拟机。

Docker运行在主系统的内核空间,而不是用户空间,换言之,它本身是使用了操作系统本身的一部分,这样确实是会限制了,Docker只能在现 代Linux内核中运行,但这也极大的简化了操作系统的进程切换。在内核中运行Docker避免了像虚拟机引起的资源浪费,而且Docker容器系统不需 要“额外启动”,因为它本来就已经“启动”了。

这些特性使得Docker方案能以极快的速度创建服务器,能直接把整个磁盘镜像部署到生产环境,而不只是给现有系统打补丁。

Docker还可以停止并保存容器的错误状态,让开发者稍后调试,这使得在Docker下调试更加方便,如果调试过程中破坏了重现bug的环境, 那么恢复到之前保存的错误状态就可以把bug重现。Docker可以在任意的Linux服务器上运行任意的应用,它的快速部署和快速销毁的特性让它也很适 合用于批处理的任务。

开源社区上有一些工具,可以帮助配置甚至用Docker模拟整套服务器集群,最受欢迎的是Docker Compose,这工具能让复杂的搭建过程简化到一个命令。

生产环境上的Docker

在本地或者云服务上的Docker服务是一回事,要使它能在生产环境上使用又完全是另一回事。在初期要在生产环境上以Docker部署还是有点单 薄,而现在最常见的术语是“容器编排”,这技术让Docker化的应用和服务能有组织地部署到服务器上,通过它,我们可以不关心容器到底部署在哪台服务器 上,只需要它们正在服务着,无论这些应用是流量监控、内部服务、数据库或者是消息队列,都能以这种方式部署。

目前最成熟的编排产品是AWS EC2 Container Service,Docker Swarm 和 Mesos。典型的编排技术核心是管理容器,但通常也有一些附带的功能,例如"blue/green"部署,容器修复,负载均衡,服务发现和容器网络配置等。

当要在生产环境上使用Docker时,还有其他一些地方要注意的,例如日志记录,环境变量配置等。

没尝试过Docker的读者可以安装一个Linux虚拟机,在上边安装好Docker,探索一下如何使用容器等技术,再决定这个技术是否合适您的团队吧。了解docker更多知识,请观看免费培训视频( http://csphere.cn/training )。希云,Docker私有云领导者!利用Docker提供更好的云计算产品和服务,欢迎访问官网首页: http://csphere.cn ,期待您的合作!