Docker PaaS
雖然Docker是一項最初脫胎于平臺即服務(PaaS)的技術(DotCloud),但有多個項目試圖從Docker構建微型PaaS。
1. Flynn
相關網址:https://github.com/flynn
截至2014年3月961顆星,24個分支。“Flynn好比Sinatra,正如Cloud Foundry好比Rails”
Flynn是眼下最受期待的Docker PaaS之一。這個開源Docker項目有近1000顆星和幾十個分支,甚至還沒有發(fā)布。由于git push部署到Docker,不難發(fā)現為什么它如此備受期待。Flynn簡化了部署和維護應用程序的工作。Flynn允許自助服務式管理容器化部署,從而為運營和開發(fā)人員簡化了生活,而不是使用復雜的配置管理系統(tǒng)。Flynn還有別于本文介紹的其他項目,原因在于它是受到贊助的開源項目。由于14個以上的贊助商捐贈了80多萬美元,這個項目絕對值得關注。
2. Deis
相關網址:https://github.com/opdemand/deis
截至2014年3月1341顆星,120個分支。“你的PaaS。你的規(guī)則。”
Deis擁有1300多顆星和120多個分支,它的歷史比Flynn還要悠久,它同樣采用了git push部署方式。Deis充分利用Chef、Docker、Django、Celery、Heroku Buildpacks和Slugbuilder,發(fā)揮其魔力。Deis本身就直接支持Ruby、 Python、Node.js、Java、Clojure、Scala、Play、PHP、Perl、Dart和Go。另外,Deis可以使用Heroku Buildpacks、Docker映像或Chef recipe部署任何對象。Deis可以部署到任何系統(tǒng)上,包括每個公有云、私有云或裸機系統(tǒng)。Deis目前在EC2、Rackspace和Digital Ocean上支持自動化配置。在即將發(fā)表的一篇博文中,我們將更為詳細地比較Deis和Flynn。
3. Dokku
相關網址:https://github.com/progrium/dokku
截至2014年3月4806顆星,384個分支。“通過大約100行Bash,Docker驅動迷你Heroku”
如果你就需要將世界上最小的git push部署到Docker容器功能,不妨關注Dokku。這個小巧的開源項目出自localtunnel(這個超級有用的實用工具可以反向代理你的本地主機端口至公共URL)的開發(fā)商,吸引了最多人的目錄。雖然功能特性不如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上的用戶需要在引導穩(wěn)定版(bootstrapping stable)之前,運行apt-get install -y python-software-properties。
Docker編排
4. CoreOS
相關網址:https://github.com/coreos
截至2014年3月2564顆星,237個分支。“CoreOS能夠在極簡的現代操作系統(tǒng)上實現倉庫級計算。”
CoreOS正在開發(fā)最佳實踐,以便將容器化應用程序部署到生產環(huán)境。它不是一個單一的開源庫,而是組合了許多可以結合使用的開源工具,包括etcd、docker和systemd。我們之前曾撰文介紹了通過Fig文件生成CoreOS文件,因為從CoreOS開始入手難度頗大。etcd庫被用作通用的鍵/值存儲區(qū),以便將服務結合起來,并且跨整個應用程序共享服務憑證。不像本文介紹的另外許多項目,CoreOS既是一個開源項目,又是一家風投資助的初創(chuàng)企業(yè)(這就是為什么CoreOS也躋身于我們的十大基于Docker的初創(chuàng)企業(yè)榜單)。
5. Fig
相關網址:https://github.com/orchardup/fig
截至2014年3月1526顆星,51個分支。“使用Docker的快速、隔離的開發(fā)環(huán)境。”
我曾寫過幾篇文章介紹Fig,因為它是本人青睞的面向Docker的小巧實用工具之一。Fig讓你可以編寫一個簡單的fig.yml文件,它就能列出你應用程序需要的所有Docker容器,并列出它們應該如何聯系起來。一旦你編寫了fig.yml,只要運行fig up -d,你的應用程序就會搭建并運行起來。本博客眼下就由fig來管理。
6. Serf
相關網址:https://github.com/hashicorp/serf
截至2014年3月1652顆星,91個分支。“一款面向服務發(fā)現和編排的分散式解決方案,具有輕盈、高可用性和容錯等優(yōu)點。”
雖然Serf并不是專門針對Docker,但是它與Docker是最佳搭檔。Serf是本人青睞的新開源項目之一,它出自開發(fā)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(不過功能絕對強大得很)。
持續(xù)集成/持續(xù)交付(CI/CD)
7. Drone
相關網址:https://github.com/drone/drone
截至2014年3月2516顆星,133個分支。“基于Docker而建的一種持續(xù)集成平臺。”
Drone是另一個既是開源項目,又是初創(chuàng)企業(yè)的項目,它為你提供了一個簡單的go二進制代碼,用debian文件來分發(fā),為你提供了直接連接到Docker的整條CI/CD流水線。是不是聽起來很酷?你的代碼根本不需要離開你的筆記本電腦或貴公司的網絡來進行測試,這對政策禁止使用GitHub和Travis等公共主機托管服務的大公司開發(fā)人員來說很重要。Drone的另一個誘人的方面在于,你可以將經過全面測試的容器部署到生產環(huán)境中,確信在兩個地方都使用一模一樣的環(huán)境。最后,Drone讓你可以使用所需的任何自定義二進制代碼和配置來構建自定義的Docker容器,這比如今的大多數持續(xù)集成平臺要靈活得多。
用戶界面
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在這方面做得很不賴。
編排
9. Kubernetes
相關網址:https://github.com/GoogleCloudPlatform/kubernetes
截至2014年3月3598顆星,501個分支。“谷歌的Docker編排器。”
Kubernetes是使用開源技術實現的容器集群管理解決方案。換句話說,這個系統(tǒng)用于管理多個主機上的容器化應用程序,提供了部署、維護和擴展應用程序的基本機制。其API的目的在于為各種工具、自動化系統(tǒng)和高級API層組成的一個開放生態(tài)系統(tǒng)充當基礎。
10. Panamax
相關網址:https://github.com/centurylinklabs/panamax-ui
截至2014年3月510顆星,43個分支。“面向用戶的Docker管理平臺。”
Panamax是一款容器化應用程序構建工具,其開源應用程序市場托管在GitHub。Panamax為使用Docker、Fleet和CoreOS的用戶提供了一種友好的界面。借助Panamax,你就可以輕松構建、共享及部署任何容器化應用程序,無論該應用程序可能有多復雜。
結束語
如果你按照衍生出來的其他開源項目來衡量某個開源項目的健康狀況,我認為可以客觀地說,Docker稱得上是健康的化身。本文旨在全面概述,而不是深入比較。我們打算在今后詳細介紹其中一些技術之間(比如Flynn vs Devis)的差異。