想厘清不断变化的Docker生态系统可能有难度,于是我们乐于帮助你更容易认清现状。一年前,我曾写过一篇文章,介绍使用Docker的十大初创企业。这回我们要谈论使用Docker的十大开源项目。我对它们进行分门别类,突显每个项目的侧重点。
Docker PaaS
虽然Docker是一项最初脱胎于平台即服务(PaaS)的技术(DotCloud),但有多个项目试图从Docker构建微型PaaS。
1. Flynn
截至2014年3月961颗星,24个分支。“Flynn好比Sinatra,正如Cloud Foundry好比Rails”
Flynn是眼下最受期待的Docker PaaS之一。这个开源Docker项目有近1000颗星和几十个分支,甚至还没有发布。由于git push部署到Docker,不难发现为什么它如此备受期待。Flynn简化了部署和维护应用程序的工作。Flynn允许自助服务式管理容器化部署,从而为运营和开发人员简化了生活,而不是使用复杂的配置管理系统。Flynn还有别于本文介绍的其他项目,原因在于它是受到赞助的开源项目。由于14个以上的赞助商捐赠了80多万美元,这个项目绝对值得关注。
2. Deis
相关网址:https://github.com/opdemand/deis
截至2014年3月1341颗星,120个分支。“你的PaaS。你的规则。”
Deis拥有1300多颗星和120多个分支,它的历史比Flynn还要悠久,它同样采用了git push部署方式。Deis充分利用Chef、Docker、Django、Celery、Heroku Buildpacks和Slugbuilder,发挥其魔力。Deis本身就直接支持Ruby、 Python、Node.js、Java、Clojure、Scala、Play、PHP、Perl、Dart和Go。另外,Deis可以使用Heroku Buildpacks、Docker映像或Chef recipe部署任何对象。Deis可以部署到任何系统上,包括每个公有云、私有云或裸机系统。Deis目前在EC2、Rackspace和Digital Ocean上支持自动化配置。在即将发表的一篇博文中,我们将更为详细地比较Deis和Flynn。
3. Dokku
相关网址:https://github.com/progrium/dokku
截至2014年3月4806颗星,384个分支。“通过大约100行Bash,Docker驱动迷你Heroku”
如果你就需要将世界上最小的git push部署到Docker容器功能,不妨关注Dokku。这个小巧的开源项目出自localtunnel(这个超级有用的实用工具可以反向代理你的本地主机端口至公共URL)的开发商,吸引了最多人的目录。虽然功能特性不如Deis或Flynn来得丰富,但极容易安装到Ubuntu 13或12.04 x64上,也极容易使用。
$ wget -qO- https://raw.github.com/progrium/dokku/v0.2.2/bootstrap.sh | sudo DOKKU_TAG=v0.2.2 bash
注意:12.04上的用户需要在引导稳定版(bootstrapping stable)之前,运行apt-get install -y python-software-properties。
#p#
Docker编排
4. CoreOS
相关网址:https://github.com/coreos
截至2014年3月2564颗星,237个分支。“CoreOS能够在极简的现代操作系统上实现仓库级计算。”
CoreOS正在开发***实践,以便将容器化应用程序部署到生产环境。它不是一个单一的开源库,而是组合了许多可以结合使用的开源工具,包括etcd、docker和systemd。我们之前曾撰文介绍了通过Fig文件生成CoreOS文件,因为从CoreOS开始入手难度颇大。etcd库被用作通用的键/值存储区,以便将服务结合起来,并且跨整个应用程序共享服务凭证。不像本文介绍的另外许多项目,CoreOS既是一个开源项目,又是一家风投资助的初创企业(这就是为什么CoreOS也跻身于我们的十大基于Docker的初创企业榜单)。
5. Fig
相关网址:https://github.com/orchardup/fig
截至2014年3月1526颗星,51个分支。“使用Docker的快速、隔离的开发环境。”
我曾写过几篇文章介绍Fig,因为它是本人青睐的面向Docker的小巧实用工具之一。Fig让你可以编写一个简单的fig.yml文件,它就能列出你应用程序需要的所有Docker容器,并列出它们应该如何联系起来。一旦你编写了fig.yml,只要运行fig up –d,你的应用程序就会搭建并运行起来。本博客眼下就由fig来管理。
6. Serf
相关网址:https://github.com/hashicorp/serf
截至2014年3月1652颗星,91个分支。“一款面向服务发现和编排的分散式解决方案,具有轻盈、高可用性和容错等优点。”
虽然Serf并不是专门针对Docker,但是它与Docker是***搭档。Serf是本人青睐的新开源项目之一,它出自开发Vagrant的那些人之手。我之前曾写过一篇文章《分散Docker:如何结合使用Serf和Docker?》,详见http://www.centurylinklabs.com/decentralizing-docker-how-to-use-serf-with-docker/,你可以深入了解如何结合使用Serf和Docker,但是在CoreOS和etcd好比是钉枪的地方,它实际上好比是锤子。Serf在Docker外面也其实很容易使用,可以用在许多不同的场合:etcd和CoreOS其实是相当特定的工具,其灵活性根本比不上Serf(不过功能绝对强大得很)。
#p#
持续集成/持续交付(CI/CD)
7. Drone
相关网址:https://github.com/drone/drone
截至2014年3月2516颗星,133个分支。“基于Docker而建的一种持续集成平台。”
Drone是另一个既是开源项目,又是初创企业的项目,它为你提供了一个简单的go二进制代码,用debian文件来分发,为你提供了直接连接到Docker的整条CI/CD流水线。是不是听起来很酷?你的代码根本不需要离开你的笔记本电脑或贵公司的网络来进行测试,这对政策禁止使用GitHub和Travis等公共主机托管服务的大公司开发人员来说很重要。Drone的另一个诱人的方面在于,你可以将经过全面测试的容器部署到生产环境中,确信在两个地方都使用一模一样的环境。***,Drone让你可以使用所需的任何自定义二进制代码和配置来构建自定义的Docker容器,这比如今的大多数持续集成平台要灵活得多。
用户界面
8. Shipyard
相关网址:https://github.com/shipyard/shipyard
截至2014年3月1443颗星,96个分支。“开源Docker管理平台”
Shipyard让你能够通过单一管理界面,管理各种Docker资源,包括容器、映像、主机及更多资源,而单一管理界面包括:Multi-Host Support、Container Metrics和充分利用REST的API。我喜欢这个部分;想部署Shipyard,你只要运行:
$ docker run -i -t -v /var/run/docker.sock:/docker.sock shipyard/deploy setup
然后,你应该能够登录到http://localhost:8000,获得漂亮的用户界面(更多的QuickStart文档可供使用)。棒极了!能够以图形化方式查看所有容器很诱人,Shipyard在这方面做得很不赖。
#p#
编排
9. Kubernetes
相关网址:https://github.com/GoogleCloudPlatform/kubernetes
截至2014年3月3598颗星,501个分支。“谷歌的Docker编排器。”
Kubernetes是使用开源技术实现的容器集群管理解决方案。换句话说,这个系统用于管理多个主机上的容器化应用程序,提供了部署、维护和扩展应用程序的基本机制。其API的目的在于为各种工具、自动化系统和高级API层组成的一个开放生态系统充当基础。
10. Panamax
相关网址:https://github.com/centurylinklabs/panamax-ui
截至2014年3月510颗星,43个分支。“面向用户的Docker管理平台。”
Panamax是一款容器化应用程序构建工具,其开源应用程序市场托管在GitHub。Panamax为使用Docker、Fleet和CoreOS的用户提供了一种友好的界面。借助Panamax,你就可以轻松构建、共享及部署任何容器化应用程序,无论该应用程序可能有多复杂。
结束语
如果你按照衍生出来的其他开源项目来衡量某个开源项目的健康状况,我认为可以客观地说,Docker称得上是健康的化身。本文旨在全面概述,而不是深入比较。我们打算在今后详细介绍其中一些技术之间(比如Flynn vs Devis)的差异。
原文链接:http://www.centurylinklabs.com/top-10-open-source-docker-developer-tools/