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