设为首页 收藏本站
查看: 1494|回复: 0

[经验分享] 联想企业云docker开发实践

[复制链接]

尚未签到

发表于 2015-8-31 16:42:35 | 显示全部楼层 |阅读模式
Docker容器技术发展势头如此迅猛,以至于很多开发人员跟不上节奏,Docker不仅是有史以来人气最高的开源项目之一,同时也已经给人们构建应用程序的方式带来了根本性变革。其实docker是基于LXC(Linux Container)容器技术发展而来,通过内核虚拟化技术(namespaces及cgroups等)来对容器进行资源隔离,容器运行时相当于宿主机上一个进程,没有额外操作系统开销,由此带来docker隔离性、便携性和轻量性等优点。
随着Kubernetes和相关管理工具的发布,docker容器技术和配套工具越来越完善。早在2014年时候,我们已经将docker引入到联想企业云开发过程中。联想企业云为企业提供云存储服务,企业更重视可靠和稳定性,所以经过深入研究和大量测试后,才决定将docker应用到实际的生产环境。除了上面提到一些特性外,我们分享在实际开发过程中docker带来的好处。
1.        持续集成,加强开发、测试迭代能力
传统开发测试流程,是通过代码驱动的,开发人员将代码提交到代码库,测试人员从代码库拉去代码,然后去模拟环境中测试,这种流程能够使得测试和开发人员看到同样的代码,但是由于环境变化,配置成为问题,这种效率较低。引入docker之后,我们可以将镜像驱动这个开发和测试过程。

在实际开发过程中,每天开发人员根据产品需求和问题,进行开发,然后将开发后的提交到代码仓库中。之后,系统会自动调用编译服务,自动编译代码仓库中的代码,然后将编译后的程序整合到基础镜像中,生成可执行镜像,然后运行可执行镜像进行自动化测试,主要运行系统的测试集,从逻辑和业务层面检测可执行镜像是否合格。验证通过后,将镜像推送到镜像仓库中,并进行发布新版本。在测试人员接收新版本通知后,从镜像仓库拉取相应版本的镜像,然后在测试进行部署,对特定的功能和问题进行测试,然后将测试结果反馈给开发人员。通过这种开发流程,可以将开发和测试人员都集中到特定的需求和问题上,增加了版本迭代更新能力,快速推进项目的进度。
2.        隔离环境差异,方便追踪调试
传统开发模式中,代码从开发人员的环境到最终在生产环境上的部署,需要经过很多的中间环境,每一个中间环境都有自己一些的差别,导致开发环境和生成环境存在很多差别。一旦出现bug,经常要耗费大量时间和精力,解决环境不一致的问题。而使用Docker,开发环境和生成环境都是用相同的镜像,应用就会运行在相同的环境中,这样不仅简化代码流水线管理,也使得问题追踪起来非常方便。同时Docker提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug,快速定位Bug,从而有针对性进行修复和完善。
3.        快速部署,持续交付
在虚拟机或者物理机部署分布式系统,通常比较耗时,即使是最快的虚拟机也要30秒到1分钟左右。Docker的虚拟化技术在创建容器过程,通常秒级时间就可以完成,大大提高部署效率,而且这种方式部署出来的系统还较为可靠。
4.        方便应对需求定制和版本升级
联想企业云为企业用户提供定制需求服务,每个企业都会有自己独立的定制服务,如果使用传统方式应对定制服务,将会耗费大量的时间和精力处理环境和应用程序的版本控制上。而使用docker容器技术可以轻松应对企业定制需求。因为Docker容器的一个特性就是应用程序与数据分离,可以保持数据不变的情况,对应用程序进行升级。具体我们在实践时,首先企业内部的私有镜像仓库升级,然后其他各台机器的镜像与私有仓库同步,然后启动新的容器,就会完成整个分布式系统的升级。通过这种方式,开发人员不用关心企业的网络环境和版本管理,只要关注定制需求的研发上,不仅提高了研发效率,而且增加企业定制服务的能力。
         现有的管理工具,如kubernate,并不是容易使用,尤其对于中小企业的运维人员,操作起来较为困难。如果直接使用这些管理工具,一方面不能和我们的产品很好对接,另一方面会影响我们的私有云产品的体验。于是为了满足上面需求,结合联想企业云存储的特点,我们开发了一套管理系统,主要模块和功能如图所示。这套管理系统融合了docker自动化部署、动态配置、自动化监控和报警和动态扩容等功能,操作起来比较简单,非常容易使用。开发人员、测试人员和运维人员都可以很方便使用这套系统,我们的企业客户用了我们这套管理系统,都表示容易上手,再加上能够对系统和容器的监控和报警,他们觉得联想企业云存储产品比较可靠,用起来比较放心。

Docker容器技术轻松解决了开发环境和生成环境不一致的难题,将开发人员、测试人员和运维人员从繁杂的部署环境解脱出来,让他们专注于自己关注的内容上,降低了人力和物力成本,同时提高了工作效率。docker容器发展至今,相应的配套工具和解决方案层出不穷,在具体选取时,不要盲目追求技术的‘高精尖’,要注意与自己的产品和需求相结合,容易使用和稳定可靠往往更重要,这也是docker能够迅猛发展和推广的一个主要原因。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106882-1-1.html 上篇帖子: 使用Dockerfile与docker build命令创建一个nginx服务器镜像,并使用浏览器进行访问 下篇帖子: Docker1.8在Centos7下的安装 联想 开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表