前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker: 优雅地部署

Docker: 优雅地部署

作者头像
tyrchen
发布2018-03-28 13:01:56
8120
发布2018-03-28 13:01:56
举报
文章被收录于专栏:程序人生程序人生

在我去年的一篇博客自动化的高效团队开发环境提到了用vagrant来统一开发团队的开发环境。用vagrant基本上解决了开发环境异构的问题,但VM(vagrant使用virtual box)footprint很大,不便于频繁更新,启动销毁速度还很慢。所以,对于文中提到的并行开发的场景,尤其是快速迭代的开发周期,支持起来还是很别扭:

以图中week 3第一天为例:Dalian已经部署到线上,Edingburgh交付测试,而Florence正在开发中。此刻Dalian随时会爆出优先级很高的customer issue;Edingburgh可能会有大量的QA issue等待修复;而Florence上的任务还如火如荼。

这意味着每周要生成至少一个公共VM,对应当前版本的代码和样本数据。如有需要(比如Dalian同时爆出几个bug,需要多人同时跟进调试),相关的工程师每人还需要一个自己的私有VM。

对于devops,这是管理的梦魇。

还好,docker出现了。我们看看docker有什么本领:

  • 使用Linux container,使得"VM"的创建和销毁在秒级就能完成。由于只是做了网络和进程的隔离,"VM"的运行几乎没有overhead。
  • 使用AUFS,可以以递进的方式创建"VM" —— 一个"VM"叠在另一个"VM"上,就像使用git增量开发一样。
  • 软件的运行环境(image)和软件本身(container)分离,和数据也分离。

头两点让docker在系统中的footprint很小,使用或者不使用docker对应用程序来说几乎没有差别。最后一点是最关键的,它让你能灵活地基于某个现存的image,和最新的软件版本,最新的线上样本数据一起,构建一个container。

vagrant无法做到这一点。一旦你创建了一个VM,你的环境,应用程序和数据都被绑定到一起了,同一个环境,不同的应用程序版本(或数据),需要创建不同的VM。

这是我之前构想的用vagrant构建的开发环境的一个例子:

如果使用docker,则简单很多。多数时候我们可以使用相同的image,配以不同的运行时软件和数据,如下图所示:

对应上图vagrant的开发环境,docker的开发环境可以是这样子的:

docker(或者类似思想的软件)是(服务端)软件开发和部署的未来,对此,我深信不疑

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档