Docker的发展势态如同森林大火,势不可挡。这项新型的Linux容器技术引燃了一路上的一切东西,面对其迅猛发展的势头,我们许多人还没有回过神来。Docker不仅是有史以来最受欢迎的开源项目之一,它还从根本上改变了人们考虑构建应用程序的方式。
基于Docker的应用程序背后的许多理念从严格意义上讲并非很新颖,但Docker给那些旧观念带来了全新视角。借助许多云开发实践,Docker促进了最佳实践,比如12-Factor应用程序。这些最佳实践当初是为了构建基于PaaS的应用程序而开发的,如今普遍适用于基于Docker的应用程序。
我们能从Docker热潮中学到什么?不妨看一看这四个方面。
整体式云应用程序的程序开发已玩完了。取而代之的是微服务架构,这种架构可以将大型应用程序及所有内置功能分解为更小的、目的导向的服务,而这些服务又可以借助通用的REST API与对方进行联系。
上世纪90年代,有一种类似的概念,名为基于接口/组件的架构。而最近,面向服务架构(SOA)似乎迎来了一些发展势头。如今,微服务概念已成为Docker社区的一个标准文化基因,流行的趋势是将应用程序分解为分离的、极简的、专门的容器,这些容器专注于只做好一件事。
完全封装的Docker容器能够为微服务应用程序构建一种高效的分布式模型,从而支持微服务。这让规模较小的开发团队有机会得以使用较大规模的架构(比如Facebook和推特使用的那种架构),因而改变了云开发实践。
尽管Puppet、Chef、Salt及其他工具引领了开发运营(DevOps)潮流,但这些工具在运营团队当中比在开发人员当中更受欢迎。
Docker是第一种在开发人员当中与在运营工程师当中一样受欢迎的开发运营工具。原因何在?因为开发人员可以在容器里面工作,而同时运营工程师可以在容器外面工作。
开发团队采用Docker时,他们为软件开发生命周期增添了一层新的敏捷性。一大区别在于一致性。基于Docker的应用程序在笔记本电脑上运行与在生产环境中运行完全一模一样。由于Docker围绕应用程序封装整个状态,你没必要因底层操作系统存在的架构差异而操心失去依赖项或软件缺陷。