十大基于 Docker 的开发工具

  • 郭蕾

2014 年 8 月 19 日

话题:DevOps语言 & 开发文化 & 方法

随着 Docker 的发展,Docker 的生态圈也越来越成熟,GitHub 上出现了很多与 Docker 相关的开源项目。CenturyLink 在其博客上总结了基于 Docker 的 10 个开发工具,主要集中在 PaaS 平台、集群管理、持续集成和 Docker 的管理工具等四个方面。InfoQ 中文站在其基础上进行了整理更新,具体如下。

  • Flynn

    Flynn 是一个使用 Go 语言编写的开源 PaaS 平台,Flynn 使用模块化的设计,任何一个模块都可以独立的进行修改、升级和替换。Flynn 的目标是简化分布式环境中应用的部署和维护,通过使用git push命令,Flynn 就可以将应用部署到 Docker,从而省去了复杂的配置和操作。Flynn 的架构大致分为两层,Layer 0 是底层的资源层,提供分布式配置、任务调度、服务发现、主机隔离等基础功能;Layer 1 基于 Layer 0 构建了一个用于集群中管理、部署、扩展服务的系统,主要包括管理 API/ 客户端、Git 接收器、数据存储、路由。Flynn 目前仍在开发中,尚未发布稳定版,但已经获得了很多公司的资助,它被称为是下一代的开源 PaaS 平台。

  • Deis

    Deis 也是一个支持共有云和私有云的开源 PaaS 系统,Deis 基于 Docker 和 CentOS 构建了一个类 Heroku 的 PaaS 系统。Deis 主要设计用来和不同的云提供商进行交互,目前支持 Rackspace、EC2、 DigitalOcean、Google Compute Engine、Bare-Metal。Deis 使用 out-of-the-box 的方式支持 Ruby、Python、Node.js、Java、Clojure、Scala、Play、PHP、Perl、Dart 和 Go 语言,同样支持 git push 部署。Flynn 和 Deis 都是两个基于 Docker 的云计算微 PaaS 技术,关于它们的区别,可以参考这篇文章,作者从架构、实现方式等多方面对二者进行了比较,Deis 目前也尚未发布 1.0 版本,但在 GitHub 上已经有 2000+ 的 star 量。

  • Dokku

    Dokku 是一个迷你版的 Heroku,基于 Docker 使用 100 行左右的 Bash 代码编写,简单的安装和配置后,即可使用 Git 命令将应用部署到本地的 Dokku 平台(当使用 git push 命令的时候,Dokku 会使用 buildpack 检测应用,然后再部署)。Dokku 实际上相当于一个单机版的 Heroku,它包含 4 个组件,分别是 Docker、Buildsteppluginhooksshcommand。Dokku 目前支持 Node.js、Ruby、Python。

  • CoreOS

    CoreOS 是一种新的、架构体系重新设计的 Linux 发行版,可以运行在既有的硬件或者云上。CoreOS 不提供类似 yum 或者 apt 类似的包管理工具,用户不需要在 CoreOS 中安装软件,而是让程序都在 Docker 容器中去运行。CoreOS 使用 systemd 和 fleet 来对容器进行管理,通过 etcd 进行服务发现和配置信息共享。CoreOS 目前风头正劲,目前已经获得融资并于上周宣布收购私有 Docker 仓库服务商 Quay.io,进军企业级的 Registry。另外,CoreOS 的 etcd 等组件也获得了社区的认可,并得到了大规模使用。CoreOS 已经发布首个稳定版本,目前主流的云服务商都提供了对 CoreOS 的支持。

  • Fig

    Fig 是一个基于 Docker 的用于快速搭建开发环境的工具,目前 Fig 团队已经加入 Docker 公司。Fig 通过一个配置文件来管理多个 Docker 容器,非常适合组合使用多个容器进行开发的场景。Fig 可以和 Docker 一起来构建基于 Docker 的复杂应用,CoreOS 的功能强大但是配置比较复杂,而 Fig 相对而言比较简单,但是很难在多台服务器上做扩展,如何使用 Fig 构建多个容器的复杂应用并且把这些应用部署到基于 CoreOS 的生产环境可以参考这篇文章。从 Docker 官方收购 Fig 也可以看到该项目的重要性,Fig 目前尚未发布 1.0 版本。

  • Atomic

    Atomic 是一个基于 Fedora 的用于运行 Docker 容器的原型系统,它从 Fedora(在将来可能会是从另一个发行版)获取软件包,并扮演了一个“操作系统二进制文件的 Git”的角色,允许对不同集合的软件包进行操作安装,并在它们之间进行原子的整体切换。因为 Atomic 项目与它的上游的 Red Hat 产品几乎承载着一样的二进制文件和内核,所以它同样会从上游的工程工作和支持中受益,这成为了它发展过程中的一项绝对优势。Atomic 项目目前还没有达到用于生产环境的要求,仍在开发中。

  • Drone

    Drone 是一个使用 Go 语言编写的基于 Docker 的持续集成系统。Drone 可以快速提供隔离的虚拟环境编译测试,而且根据需要保留结果,比使用 VM 更加简洁有效。如何使用 Drone 和 Docker 搭建全功能的 CI 服务器可以参考此文。使用 Drone 搭建 CI 服务器后,代码可以不离开公司网络即可测试,这非常适合大公司的保密原则,另外,由于 Drone 基于 Docker 使用,所以部署到生产环境也非常容易。

  • Kubernetes

    Kubernetes 是来自 Google 的容器集群管理工具。Kubernetes 支持跨平台,它可以在除 Google 以外的其它云平台中运行,比如 AWS。基于 Docker 之上的 Kubernetes 可以构建一个容器的调度服务,其目的是让用户通过 Kubernetes 集群来管理云端容器的集群,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。目前 Kubernetes 已经得到得到微软、IBM、红帽、CoreOS 等公司的支持。

  • Panamax

    Panamax 是一个 CenturyLink 开源的 Docker 管理工具,用户可以把多个 Docker 容器组合为模板并分享到 GitHub。Panamax 中的应用是由基于 Docker 镜像的独立服务组合而成,这些 Docker 镜像来自 Docker Hub 或者其它的 Docker registry。Web 的用户界面允许每个服务可以连接到其他服务,并可以配置环境变量、端口绑定、卷。另外也可以添加自定义的 Docker 运行命令。当这些服务组合在一起成为一个具备完整功能的应用后就可以作为一个模板保存到 GitHub。Panamax 的最初版本运行在由 Vagrant 管理的 VirtualBox 上,由于 Vagrant 的限制,目前 Panamax 仅可运行在 Mac 和 Linux 的 VirtualBox 上,并不支持其他虚拟化平台。CenturyLink 的云平台也将会支持 Panamax。

  • Boot2Docker

    Boot2Docker 是一个专为 Docker 而设计的轻量级 Linux 发型包,解决 Windows 或者 OS X 用户不能安装 Docker 的问题。Boot2Docker 完全运行于内存中,24M 大小,启动仅 5-6 秒。Boot2Docker 需要运行在 VirtualBox 中,具体的安装可以参考官方文档

  • 另外,为了更好的促进 Docker 在国内的发展以及传播,InfoQ 开设了《深入浅出 Docker》专栏,邀请 Docker 相关的布道师、开发人员、技术专家来讲述 Docker 的各方面内容。InfoQ 希望 Docker 专栏能帮助读者迅速了解 Docker,希望新的技术、新的理念能让更多的人受益。

    DevOps语言 & 开发文化 & 方法