十大基於Docker的開發工具
隨著Docker的發展,Docker的生態圈也越來越成熟,GitHub上出現了很多與Docker相關的開源專案。CenturyLink在其部落格上總結了基於Docker的10個開發工具,主要集中在PaaS平臺、叢集管理、持續整合和Docker的管理工具等四個方面。InfoQ中文站在其基礎上進行了整理更新,具體如下。
Flynn是一個使用Go語言編寫的開源PaaS平臺,Flynn使用模組化的設計,任何一個模組都可以獨立的進行修改、升級和替換。Flynn的目標是簡化分散式環境中應用的部署和維護,通過使用git push命令,Flynn就可以將應用部署到Docker,從而省去了複雜的配置和操作。Flynn的架構大致分為兩層,Layer 0是底層的資源層,提供分散式配置、任務排程、服務發現、主機隔離等基礎功能;Layer 1基於Layer 0構建了一個用於叢集中管理、部署、擴充套件服務的系統,主要包括管理API/客戶端、Git接收器、資料儲存、路由。Flynn目前仍在開發中,尚未釋出穩定版,但已經獲得了很多公司的資助,它被稱為是下一代的開源PaaS平臺。
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是一個迷你版的Heroku,基於Docker使用100行左右的Bash程式碼編寫,簡單的安裝和配置後,即可使用Git命令將應用部署到本地的Dokku平臺(當使用git push命令的時候,Dokku會使用buildpack檢測應用,然後再部署)。Dokku實際上相當於一個單機版的Heroku,它包含4個元件,分別是Docker、Buildstep、pluginhook、sshcommand。Dokku目前支援Node.js、Ruby、Python。
CoreOS是一種新的、架構體系重新設計的Linux發行版,可以執行在既有的硬體或者雲上。CoreOS不提供類似yum或者apt類似的包管理工具,使用者不需要在CoreOS中安裝軟體,而是讓程式都在Docker容器中去執行。CoreOS使用systemd和fleet來對容器進行管理,通過etcd進行服務發現和配置資訊共享。CoreOS目前風頭正勁,目前已經獲得融資並於上週宣佈收購私有Docker倉庫服務商Quay.io,進軍企業級的Registry。另外,CoreOS的etcd等元件也獲得了社群的認可,並得到了大規模使用。CoreOS已經發布首個穩定版本,目前主流的雲服務商都提供了對CoreOS的支援。
Fig是一個基於Docker的用於快速搭建開發環境的工具,目前Fig團隊已經加入Docker公司。Fig通過一個配置檔案來管理多個Docker容器,非常適合組合使用多個容器進行開發的場景。Fig可以和Docker一起來構建基於Docker的複雜應用,CoreOS的功能強大但是配置比較複雜,而Fig相對而言比較簡單,但是很難在多臺伺服器上做擴充套件,如何使用Fig構建多個容器的複雜應用並且把這些應用部署到基於CoreOS 的生產環境可以參考這篇文章。從Docker官方收購Fig也可以看到該專案的重要性,Fig目前尚未釋出1.0版本。
Atomic是一個基於Fedora的用於執行Docker容器的原型系統,它從Fedora(在將來可能會是從另一個發行版)獲取軟體包,並扮演了一個“作業系統二進位制檔案的Git”的角色,允許對不同集合的軟體包進行操作安裝,並在它們之間進行原子的整體切換。因為Atomic專案與它的上游的Red Hat產品幾乎承載著一樣的二進位制檔案和核心,所以它同樣會從上游的工程工作和支援中受益,這成為了它發展過程中的一項絕對優勢。Atomic專案目前還沒有達到用於生產環境的要求,仍在開發中。
Drone是一個使用Go語言編寫的基於Docker的持續整合系統。Drone可以快速提供隔離的虛擬環境編譯測試,而且根據需要保留結果,比使用VM更加簡潔有效。如何使用 Drone和Docker搭建全功能的CI伺服器可以參考此文。使用Drone搭建CI伺服器後,程式碼可以不離開公司網路即可測試,這非常適合大公司的保密原則,另外,由於Drone基於Docker使用,所以部署到生產環境也非常容易。
Kubernetes是來自Google的容器叢集管理工具。Kubernetes支援跨平臺,它可以在除Google以外的其它雲平臺中執行,比如AWS。基於Docker之上的Kubernetes可以構建一個容器的排程服務,其目的是讓使用者通過Kubernetes叢集來管理雲端容器的叢集,而無需使用者進行復雜的設定工作。系統會自動選取合適的工作節點來執行具體的容器叢集排程處理工作。目前Kubernetes已經得到得到微軟、IBM、紅帽、CoreOS等公司的支援。
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是一個專為Docker而設計的輕量級Linux髮型包,解決Windows或者OS X使用者不能安裝Docker的問題。Boot2Docker完全執行於記憶體中,24M大小,啟動僅5-6秒。Boot2Docker需要執行在VirtualBox中,具體的安裝可以參考官方文件。
相關文章
- 基於Docker封裝的開發包工具Docker封裝
- 基於Docker的LNMP開發環境DockerLNMP開發環境
- 基於gin的golang web開發:dockerGolangWebDocker
- 如何構建基於 docker 的開發環境Docker開發環境
- 基於 Docker 構建統一的開發環境Docker開發環境
- 基於protostuff的序列化工具類開發
- 基於 docker 開發環境下-配置 PHPStorm xdebugDocker開發環境PHPORM
- 基於 Angular 開發的 紀念日計算工具Angular
- 基於Docker搭建PHP+Nginx+MySQL開發環境DockerPHPNginxMySql開發環境
- 基於jquery+html開發的json格式校驗工具jQueryHTMLJSON
- CatiaMagic — 基於MBSE的產品創新和正向開發工具
- 一鍵搭建基於docker的nodejs、php開發環境 (開源專案)DockerNodeJSPHP開發環境
- GitLab & Docker 前端開發工具鏈GitlabDocker前端
- 基於node.js的腳手架工具開發經歷Node.js
- 基於微信開發的一款工具類小程式。
- 花椒前端基於 Docker 的 SSR 持續開發整合環境實踐前端Docker
- 基於Docker的GoldenGate部署DockerGo
- 基於 Hyperf 開發的商城
- 基於Github的敏捷開發Github敏捷
- 基於TODO的開發方法
- 2.1 基於python開發的資料比對工具--SYDCTOOL介紹Python
- 一款基於 Java 開發的微信資料分析工具!Java
- 「Part 1」面向 Javascript 開發人員的 Docker 簡介(基於 Node.js)JavaScriptDockerNode.js
- 在家工作的十大開源工具開源工具
- 用前端姿勢玩docker【四】基於docker快速構建webpack的開發與生產環境前端DockerWeb
- 基於 VSCode下的 Flutter 開發VSCodeFlutter
- 基於WDF的驅動開發
- 分享 6 款用於管理Docker容器的免費開源工具Docker開源工具
- 基於docker部署jenkinsDockerJenkins
- [mysql/docker] 基於Docker安裝MYSQLMySqlDocker
- 想入門web前端開發,並且學好,你必須知道的十大開發工具!Web前端
- 基於Ruby的Burpsuite外掛開發UI
- 基於gin的golang web開發:路由GolangWeb路由
- 基於ThinkPHP開發的公司官網PHP
- 基於ThinkPHP開發的好處如下:PHP
- Realm:一個基於 Rust 的全新流量轉發工具Rust
- 用於撰寫研究論文的十大AI工具AI
- Python學習系列之十大Web開發工具介紹!PythonWeb
- 自己開發的線上視訊下載工具,基於Java多執行緒Java執行緒