十大基于Docker的开发工具

jopen 10年前

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

  1. Flynn

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

  2. 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 量。

  3. Dokku

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

  4. CoreOS

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

  5. Fig

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

  6. Serf

  Serf 是 一个使用 Go 语言编写的去中心化的服务发现和编排的解决方案,特点是轻量级和高可用,同时具备容错的特性。Serf 可以运行在 Linux、Mac OS X、Windows 上,节点间通过 Gossip 协议来通信。Serf 是由 Vagrant 团队开发的,Serf 和 Etcd、ZooKeeper 的区别可以参考此文。如何在 Docker 中使用 Serf 可以参考这个教程

  7. Drone

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

  8. Shipyard

  Shipyard 是一个 Docker 镜像和容器管理工具,除了基本的镜像构建容器启动等功能之外,它还具有在浏览器中 attach 到容器的功能,并通过 hipache16 来进行容器之间的连接。同时它也支持跨节点的 Docker 管理和容器 Metrics 采集。

  9. 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。

  10. Boot2Docker

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

来自: InfoQ