The Texas Tribune的Docker之旅

添加时间:15-09-22   添加人:  点击:

我们The Texas Tribune是Docker的粉丝。在Doker 1.0版本发布之前我们就开始关注它了,自去年6月份Doker发布第一版production-ready代码时就已经将其纳入我们的基础架构中。目前,Docker 已经成为我们平台的主要基础。

我们是一个小型非盈利的新闻机构,主要报道国家层面的政治与政策,以及有一个主新闻网站(www.texastribune.org)、一个评论网站(tribtalk.org)和其他几个网站。这些网站均由非常能干的新闻应用程序开发团队来开发维护,开发环境主要是调试遗留应用程序或静态网站和频繁地开发新的应用。主网站是基于Django语言(同时也使用Ruby语言),节点和彼此间存在大量的依赖关系。

 

如何在所有的软件安装中实现正确的版本,且保持一致和可重复性呢?那就需要依靠Docker。对于一个新开发者,如果你按照README的详细说明来安装项目工程,你将会耗费几个小时甚至于几天。使用Docker,你将在几分钟内搞定。

我们最初使用Docker,仅仅是把它作为一个很不错的独立开发环境,认为它是steroids上的版本管理工具(想想 virtualenv或者rvm)。

逐渐地,我们开始在很多方面结合使用Docker。利用Jenkins作为持续集成工具;如数据库的备份与更新、Django 维护等具体的操作任务时使用的是Rundeck。对于Rundeck和Jenkins,主机运行不同的项目需要做大量的不同类型工作,而且每个项目都有不同的要求和相关的软件。以前,我们在不同项目上不得不安装对应的软件,并希望它们之间不存在任何冲突。但这是一个不现实的希望,不同软件总是存在冲突。现在,利用Doker,所有的事情互相独立,在Jenkins或者Rundeck的主机上没有任何需要特别安装的软件。每一项任务作为一个独立的Docker容器运行。这些主机可以用来做一件事(并把它做好):运行我们的CI 和我们的业务。

自从这项服务提供以来 ,Doker Hub就是工作流程的一部分。我们使用其自动生成功能。这意味着,只要一个新commit 提交到GitHub,Docker Hub 就开始构建images。在己建立的框架上不需要的当前Git 库的副本,Rundeck 和Jenkins将会获得这些images。Docker Hub也连接到parent images,当parent images更新时,child images也随之更新。这一切的完成过程中我们没有任何干预。目前,我们公布了所有关于Hub的Doker开源项目,以便他人查找,使用和延伸我们的工作。(28个项目)

我们召开了一系列关于Docker的研讨会,目的是让平台和新闻应用程序开发团队熟悉它,并在自己项目中来使用Docker,甚至演讲报告都是通过Docker来完成的。

在辅助服务中也开始使用Docker。有一个Docker image,它是用来完成邮件的分发的。插上您的 Mandrill key就可以了,不再需要建立艰巨的后缀任务、Sendmail或其他的事情。简单地启动container和与它连接的其他container或者主机就可以实现即时邮件分发功能,而且几乎不存在任何问题。对于Jenkins,配置邮件的传递分发曾是一个痛点,但现在不再是了。

另一个 image,它可以作为一个OAuth2的代理。可以将它链接到其他 container和bam!——即时身份验证。Doker也可以运行高性能的应用程序,像视频聚合和流媒体服务。还有一个image可以提供Elasticsearch(基于Lucene的搜索服务器)的功能。对于实现Elasticsearch功能而言,运行在container里应用程序将会比运行安装在java上应用程序容易很多。

我们备受欢迎的Government Salaries Explorer和Texas Legislative Guide两者均在Docker上运行。这意味着我们新闻应用开发团队可以部署和维护这些应用程序,而不用担心Amazon Web服务器复杂的自动释放和弹性负载均衡。

利用Docker我们可以容器化任何新开发或者很大改动的应用程序,并加以运行。

目前,主网站还不是建立在Docker上,但我们正在朝着这个方向努力。这可能会有点困难,因为存在很多需要移动的部件。作为我们运行时间最长的服务网站,对它而言,变化是更难、更高风险的。我们同样期待去了解两个方面的问题,一是如何进行快速转变;二是提供编排、部署和管理的服务竞争格局将如何发展。同时也密切关注着Amazon’s Elastic Container Service(和使用它的产品,像Empire和Convox)以及Kubernetes、Tutum和Rancher。

Docker早已在我们公司普及,并在节省时间和方便使用上提供了实实在在的好处。我们期待在更多的地方使用它!