摘要:提升了软件测试的速度,毫无疑问,任何研发团队都应该选择它。环境是生产环境的拷贝,最后一轮回归测试在这个环境下进行。一部分测试人员对版本进行回归测试,其他测试人员可以测试下一版本,同时研发人员可以在新分支上开发新特性。
Docker提升了软件测试的速度,毫无疑问,任何研发团队都应该选择它。下面我来告诉你为什么。
一直以来,部署测试环境是一个耗时并且繁杂的工作。即便测试环境中运行正确,开发、测试和生产环境的差别也会导致生产环境中出现问题。虚拟机通过拷贝一份操作系统数据解决了这个问题,代价是运行效率的降低和数Gb的磁盘空间。
Docker,作为一个轻量、快速的Linux虚拟化工具,应运而生。
Docker的优势首先,任何一个技术人员都可以几秒内在本地搭建一个测试环境。容器取代了虚拟机,事实上作为一个进程运行在操作系统之上,所以能够秒间启动。镜像取代了虚拟机文件,但具有更多特性,如果本地存储了一个镜像,在下次构建或者拉取时只会加载差异的部分。
对于采用Docker的团队,搭建测试环境是很常用的,简化这类操作带来的效率也更明显。如果软件架构延伸到staging和production,那么在staging和production环境交付也可以这么简单。
另一个特性是它赋予你创建全新的虚拟设施的能力,你可以把虚拟设施添加到你的服务器集群中,一般称之为”green” build。”green” build环境是生产环境的拷贝,最后一轮回归测试在这个环境下进行。测试完成以后,通过部署脚本修改服务器为production模式。之前的production服务器,一般称之为”blue” build,被下线,以备代码回滚。上述的构建和部署过程,我们称之为”green/blue deployment”,我们也可以通过其他技术实现,Docker使这些操作更为简单。
为什么是Docker?基于windows的软件编译成一个多带带的安装程序时,web软件有一个不同的交付:创建运行在一台服务器上。传统的网站发布管理包含创造3-4个不同的层:开发、测试、生产,有时候还有运行时环境。这种模式里,至少每层有一台服务器以及一系列的运行规则。当软件以及为下一个操作准备好时,构建可能部署到下一层服务器。
虚拟机改变了这一切,服务器容下每个团队成员创建一个不同的服务。这允许每个分支可以独立测试,在最后阶段合并到主线,而不需要在新硬件上花费成千上万美元。每人一个虚拟机,这也使得当测试人员在秒级机器上重复测试产品补丁时,开发者在本地机上排除产品bug成为可能。一部分测试人员对pre-release版本进行回归测试,其他测试人员可以测试下一版本,同时研发人员可以在新分支上开发新特性。
虚拟机的问题是大小和速度。每个虚拟机包含一整个host操作系统(简称OS),创建一个虚拟机就意味着占据数GB的空间,创建一整个新运行系统,然后安装“构建”在操作系统里。更糟糕的是,操作系统在应用空间里运行——这就像在宿主OS里还有一个OS。虚拟机的boot/ install进程可能需要几分钟到1小时,这对于中断流而言很是够了。在不影响性能的情况下技术人员可能会在笔记本上启动host 1-2个虚拟机;试着在网络上按需取得虚拟机的创建,这完全是“私有云”项目。
Docker在OS内核而不是应用空间运行,换句话说,它是OS的一部分。作为OS的一部分运行限制了Docker只能在比较新的linux内核上运行,包括host机和容器,但是这样也很大程度上简化了OS的进程管理。Docker在内核里运行减少了很多冗余。举个例子,一个宿主机上的所有Docker容器共享一个内核,而每个vm都需要一个内核。这意味着Docker容器不需要操作系统式的“boot”(启动),因为容器基于的内核一直在运行。
所有这些特性使得Docker能够快速地创建机器,所有进入生产环境的机器都是基于镜像的拷贝,而不是一个现有的服务器的补丁。
这种在broken state情况下停止和保存一个容器的能力,使得在Docker环境下调试更为容易。如果调试破坏了环境条件,或者在某些方式下“弄脏”环境,重新恢复broken state是非常简单的。Docker对于任何应用在任何Linux服务器上都是可用或者运行着的;容器的快启动和可丢弃性对于批处理等任务特别方便。
Docker容器有一些工具帮助你配置甚至模拟完整的基础设施,这样团队生活更happy。其中最受欢迎的是Docker Compose,之前部署配置复杂的多个程序,现在仅仅一条命令就ok了。
本地的Docker和云服务器上的docker并没有区别,但确保应用到production就完全不一样了。Docker早起像是Wild West,当它开始进入生产的时候。共同的挑战是 容器编排,即将Docker化的应用和服务,规划到计算机资源的集群中。这意味着企业不在乎容器在哪里运行,只在乎它们在运行并能够正确地处理请求,不管是应用是网站交互,内部服务、数据库,还是消息队列。
编排领域领域的大玩家有AWS EC2 Container Service,,Docke Swarm 和Mesos.。编排的服务可以很好地管理容器,同时面临着一些关键问题,比如blue/green部署,容器恢复,负载均衡,服务恢复和容器网络互联。
当评估Docker在生产环境下的应用时,当然其他的挑战比如日志、环境变量系统配置。看你是否准备迁移到Docker最好的标志就是看你离12 Factor App有多近。
Don Taylor在CodeMash的Docker教程让观众了解了Linux上安装Docker、创建容器和在容器中执行命令。要深入了解,github是最好的选择。
安装一个Linux虚拟机、安装Docker、创建容器,然后自己去决定是否在你的组织里使用Docker技术。
本文由赵帅龙编译整理,原文链接:http://blog.tenxcloud.com/?p=742
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26464.html
摘要:企业使用的最大原因是帮助他们部署多系统,迁移应用程序以及消除手动配置工作。文化这是好消息,企业寻求推进文化转型。在安全威胁下,目前需要大量的手动安全补丁。很有可能是企业在面对混合云挑战过程中的真正答案。 企业喜欢Docker。在许多企业的2016战略规划上,Docker已成为科技创业公司和金融服务集团的宠儿,尽管Docker还非常年轻。 众所周知,企业不需要在DevOps改造到某个阶段...
摘要:工程师选择了环境中的一台当前没有在负载均衡器中被激活的主机。工程师登陆到这台主机并从注册表中获取新的版本。在生产维护窗口中,更新负载均衡器使其指向更新过的主机。然而将部署代码化的问题仍然存在。 这篇文章是一系列文章的第一篇,在这一系列文章中,我们想要分享我们如何使用Docker、Docker-Compose和Rancher完成容器部署工作流的故事。我们想带你从头开始走过pipeline...
摘要:本文是网易容器云平台的微服务化实践系列文章的第一篇。网易容器云平台的前身是网易应用自动部署平台,它能够利用云提供的基础设施,实现包括构建和部署一体化在内的整个应用生命周期管理。目前网易云容器服务团队以的方式管理着微服务,每周构建部署次数。 此文已由作者冯常健授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 摘要:网易云容器平台期望能给实施了微服务架构的团队提供完...
摘要:年我们开始专注于开源云计算技术,当时开源的力量正在逐渐浮现。问你现在在实验室的工作是什么我主要负责实验室云计算团队的技术工作,以及与技术相关的其他事宜,包括开源以及一些商业上的技术合作。 非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/203520 张磊,浙江大学计算机学院博士生,科研人员,VLIS实验室云计算组技...
摘要:年我们开始专注于开源云计算技术,当时开源的力量正在逐渐浮现。问你现在在实验室的工作是什么我主要负责实验室云计算团队的技术工作,以及与技术相关的其他事宜,包括开源以及一些商业上的技术合作。 非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/203520 张磊,浙江大学计算机学院博士生,科研人员,VLIS实验室云计算组技...
阅读 2537·2023-04-26 00:57
阅读 909·2021-11-25 09:43
阅读 2220·2021-11-11 16:55
阅读 2203·2019-08-30 15:53
阅读 3592·2019-08-30 15:52
阅读 1457·2019-08-30 14:10
阅读 3379·2019-08-30 13:22
阅读 1209·2019-08-29 11:18