Docker 的步伐:DevOps 与 OS 化

过去十年云计算的发展,在 IT 领域为共享经济提供了新的机遇;而过去五年移动互联网的兴起,更是在诸多方面给 IT 架构提出了新的挑战。新的挑战,新的机遇,同时也意味着新的活力。一时间,Docker 、微服务、DevOps 以及精益研发等新词汇,在较短的时间内,即充斥着整个 IT 行业。基础设施领域,巨头的垄断,以及技术壁垒的存在,每每会限制入局者,也让后来者望而却步。面对业务需求的不断演进,软件提供商的应对能力如何,在机遇面前一样接受考验。linux

每每是时代的领航者,首先嗅探到历史变革前的酝酿。咱们大体看到:对的时机,新的思想总显得有些俏皮,同时还不失冒进。思想背后,咱们也总能发现:有些公司进行着那些惊为天人的尝试,他们激进,他们开拓,他们从 0 到 1 。Docker 这家公司在这其中不可谓是浓墨重彩的一笔。安全

目前为止,历史给了 Docker 三年多的时间。这三年中,Docker 自始至终将 " Build ,  Ship ,  Run " 看成公司的宗旨,也就是帮助用户完成任意应用的构建、发布与运行。网络

Docker 的步伐:DevOps 与 OS 化Docker 的步伐:DevOps 与 OS 化

经过总结 Docker 的三年,咱们不难发现 Docker 的步伐:架构

  • 第一年,专一软件构建,对接构建下游,营造镜像生态
  • 第二年,服务容器管理,发布调度平台,打造交付流程
  • 第三年,整合企业资源,完善平台功能,着手应用编排

现在,在这第四年过半之际,再去解读 Docker,咱们会发现,Docker 的发展彷佛除了重视应用的 " Build ,  Ship ,  Run " 以外,另外还在两个领域的努力有点“此地无银三百两”:负载均衡

  • 推动 DevOps 进程
  • 管理能力迈向 OS 化

Docker 推动 DevOps运维

DevOps 在 IT 领域是一种强调开发团队、运维团队以及其余团队之间加强协做与沟通,以达到软件产品快速成熟以及安全可控的文化。从 Docker 的宗旨来看,DevOps 的理念彷佛很是匹配,Docker 彻底有能力来加速、保障软件的生命周期。而从这几年的行业发展来看,Docker 做为一款工具,的确在帮助企业践行 DevOps 理念,同时也借助这款工具的打磨,经过可视价值在更大的群体中推广 DevOps 。分布式

Docker 的步伐:DevOps 与 OS 化Docker 的步伐:DevOps 与 OS 化

若是说依旧以软件构建、CI / CD 等来介绍 Docker 带来的 DevOps 价值,那未免有些老生常谈。若是关注 Docker 最新动态,你不会错过 Docker 原生集成编排的爆炸性新闻。当时 DockerCon 2016 发布此消息以后,坊间关于编排之争、容器生态分裂等传言与猜想甚嚣尘上。而在我看来,编排只是一种形式, Docker 所指望的 DevOps 程度远不止如此,目前的动做实际上也不止于此。微服务

原生集成编排工具

Docker 推出 Swarmkit,原生集成编排能力的新闻,我相信对其余以容器编排为目标的分布式平台(好比 Kubernetes,Mesos+Marathon 等)而言,是一个不太友好的消息。一个工具,一个厂商,凭借在容器生态中拥有大量的用户群体,釜底抽薪,拦截了北向生态。乍一看,的确如此,但若是从 DevOps 的角度从新看待这个问题,也许你们会有不同的收获。性能

DevOps 是一种新的文化理念,在其驱使之下,践行 DevOps 带来价值的大与小,世人通常很难衡量,每每只是与现有固化流程做简单对比。PaaS 领域,人们习惯于将 DevOps 联系进来,并且从效果来看,PaaS 的存在的确大大简化了传统运维人员对于应用发布后的管理,所以相似于 Kubernetes 等平台也确确实实受到传统运维人员的追捧,释放运维彷佛看到曙光。

然而,回到 DevOps,这一词的存在,受益者可毫不止是 “ 运维人员 ” 。对于开发人员而言,一样存在价值。或许有人言:那岂不是意味着开发人员会承担更多的活,去涉及运维的脏活、苦活、累活呢?若是是传统的 IT 架构,缺少足够的工具辅佐,恐怕是如此,或者 DevOps 步履维艰。

而现在,在 Docker 的世界中,不少事情彷佛变的足够简单。在解决了网络、存储、安全等问题以后,Docker 的 Swarmkit 帮助 Docker 大大下降了用户使用容器,践行 DevOps 的门槛。至今为止,大部分企业内部的软件交付,每每会涉及三个部门:开发、测试、运维,三者缺一不可。Docker 的思路比想象中的要简单不少,力求在工具层面作到最简约,仅仅经过 Docker 一款工具就能够完成开发、测试、运维等绝大部分工做。若是仅仅在开发者占用的仅有资源中,Docker 便可以提供完备的 “ End-to-End ” 的工具链,那工程师彻底能够轻松胜任 DevOps 角色。开发工程师,在开发过程当中融入运维的理念,借助 Docker 工具的威力,走通软件生命周期的全流程。Docker 带来的开发部署等环节的环境一致性、编排功能的完备性,势必大大下降团队内部的沟通成本和资源开销。我想企业内部在作IT决策时,如此明显的价值导向不可能视而不见。

DevOps 自始至终都没有局限在 PaaS 的运行时,相比运维庞大的 PaaS 平台来解放应用运维的能力,是否会存在本末倒置,一切都还在未可知,至少 Docker 这种轻量级,最便利的一体化方式给 DevOps 提供了一种新的思路。

开发驱动监控

Docker 以轻巧的方式,实现了用户对于编排的需求。表象彷佛很光鲜,可是咱们不妨对目前广泛的编排进一步的思考。是否会发现,相似于 Kubernetes 与 Swarmkit 的编排着重于应用的运行时管理,若是仅限于运行时,仅限于应用运维,缺少开发端源头的输入,开发与运维的鸿沟依然赫然在目,一分很多,丝毫无改观。

传统的 PaaS 平台,好比 Cloud Foundry,OpenShift,能够基本作到管理应用的运行。然而,应用的生命周期每每比这更复杂,随后的监控、协调、调度、故障恢复等都是须要克服的难题。而这些在传统企业内部,毫无疑问都是运维的差事,出了问题还毫无避免的追溯开发人员。若是此时,在拥有传统 PaaS 的背景下,一款软件的生命周期中,能够更多的受 DevOps 文化影响,那能够大大减小不少成本。举一个简单的例子,在传统 PaaS 以及容器编排平台中,对于应用的监控每每很难作到放之四海皆准。对于一些应用而言,平台通用的监控不是粒度太大,犹如隔靴搔痒,就是提供的细粒度监控并不针对用户的痛点,显得南辕北辙。运维人员在设计监控的时候,根本没法经过通用的方式完成应用的 “ 个性化 ” 需求,所以,权衡诞生,取舍不免。

若是关注最新的 Docker 1.12,细心的人可能会发现:

Dockerfile 开始支持新命令 HEALTHCHECK,完成用户指定的应用健康检查

Docker 的此举,看似不经意,实则平地见惊雷,一举弥合了开发与运维的鸿沟,至少在应用监控领域。Docker 大大释放了运维人员的压力,可是企业切入 Docker 的第一步仍是 Docker 化,也就是 Dockerfile,这一环节天然是开发者的范畴。另外,对于应用的个性化监控,我想没人比应用的开发者更清楚,若是由应用开发者来承担,来完成这部分的定义,彻底是件皆大欢喜的事。今后,开发环节即完成应用自定义监控的定义, 经过 Docker 提供的统一的架构完成监控,运维环节的监控将再也不那么捉襟见肘

能够说,Docker 1.12 开始,它为应用监控提供了新的契机,弥合开发与运维的鸿沟,打通了二者的任督二脉,这每每是传统的 PaaS 平台,容器编排平台没法企及的。

Docker 迈向 OS 化

Kubernetes 、Mesos 等平台诞生以后,回顾过去的一到两年,仿佛整个生态的潜意识都有着一个潜意识:容器生态分为两层,容器引擎的 Docker 做为管理工具,做为底层,单纯服务于容器;编排平台的 Kubernetes 或者 Mesos,做为上层,知足应用编排的各类需求。笔者也一度认为 Docker 势必将往上层走,卧榻之侧,岂容他人鼾睡。然而,Docker 的举动却使人大吃一惊,采起的策略则是:Docker 迈向 OS 化

自从 libnetwork 诞生,Docker 彷佛就传递着一种信息:无意借力第三方工具,借助内核借力打力

Docker 风靡至今,面对传统的资源管理方式,至今仍有未解之谜。若是说,Docker 暂且借助内核的 VxLan 能力,缓解或解决了 Docker 容器世界的网络难题,那么企业内部架构中仍有问题存在,好比存储,好比负载均衡等。问题当然要解决,不过反观近年来企业应用的发展史,在选择底层软硬基础设施时,每每较信任更为基础的操做系统(Operating System,OS),在与上层云平台的磨合过程当中,多多少少存在水土不服。所以,Docker 管理能力迈向 OS 化,也不难理解。容器将来的方向颇有可能打破传统 IaaS 与 PaaS 的界限,回到广义云 OS 层面的变革中。

全局存储

对于应用而言,数据的重要性不言而喻。计算与存储分离,一直是 Docker 最但愿的数据管理方式,而对于存储的统一化管理,Docker 一直没有给出使人信服的解决方案,反而是生态中相似于 ClusterHQ,HedVig 等公司一致在该领域深耕。不过,这也不能苛责 Docker,这毕竟不是 Docker 的强项与主营业务。

Docker 不可能封闭容器生态的存储市场,这方面的努力,咱们从 Docker 抽象存储概念便可看出( Docker 诞生,只存在容器和镜像这两个一级概念,而随着时间的发展,Docker 另外抽象出存储卷( Volume )以及网络,做为一级概念,并行管理 )。

经历了过去 3 年多单机化的存储卷,现在 Docker 1.12 推出全局的存储卷,原生支持集群环境中的数据卷共享。在加上 DockerCon 2016 上,Docker 官方演示借助 NFS,集群环境中管理分布式数据。容器生态有理由推测,Docker 在存储领域并不是视而不见,而是很是有可能借助操做系统 OS 的能力,切入存储生态。

IPVS 负载均衡

现在,大多数企业级的应用,再也不是仅拥有单个实例。多实例的现状经常能够避免不少问题,好比单点问题,负载的均衡问题等。而 Docker 的世界中,容器的扩展一直以来不是一个新话题。对于扩展出来的应用容器,服务的注册以及发现由谁来完成,一直没有一个定论。而 Kubernetes 等平台则是为此专门引入一个平台路由组件完成这部分工做。因为 Docker 的网络模式与平台路由组件在协做时,或多或少会存在水土不服,性能等方面的损耗,所以很难达到 " 1+1>2 " 的效果。

新版本的 Docker 1.12,编排应用时,能够直接使用 Linux IPVS 完成服务的注册以及负载均衡。或许,这一举措直接带来的好处将是:

  • 借助内核能力,无需额外配置、部署及管理
  • 大幅提升负载均衡的性能
  • 原生支持多种传输协议的负载均衡能力( TCP,SCTP, UDP 等 )

大道至简,若是诸如 Linux 内核等底层技术栈,自己能够提供负载均衡的管理能力,运维人员没有理由再去额外安装一个负载均衡模块,昂贵的配置、管理、运营成本是团队决策者不得不考虑的点。另外,比起 Nginx / HAProxy , IPVS 还在多个层面存在优点:好比 UDP 的支持,多样的负载均衡策略,以及健康检查等。

总结

全新的领域,用“探索”来形容如今的 Docker,我认为最合适不过。着眼全球的软件交付,Docker 对于 DevOps 理念的贡献,可谓不可小觑。而面对云计算领域的基础设施以及平台架构,Docker 的思路也许会更倾向于 OS 化,逐渐走向 Cloud OS 。然而,Docker 做为目前全球最煊赫一时的创业公司,百般眼光以及多样的揣测,都会汇集于这条不乏趣味的鲸鱼身上。将来如何,咱们拭目以待。

免费提供最新Linux技术教程书籍,为开源技术爱好者努力作得更多更好:http://www.linuxprobe.com/

相关文章
相关标签/搜索