Docker相關的項目

整理自《Docker技術入門與實踐》html

PaaS(Platform as a Service)

PaaS 是但願提供一個統一的可供全部軟件直接運行而無需複雜配置的操做系統平臺。Docker 與生俱來的應用封裝爲 PaaS 的實現帶來了便利。基於 Docker 的 PaaS 項目:前端

Deis

  • 重要連接:
    官方網站代碼維護git

  • 基本信息:
    Deis 是開源的 PaaS 項目,基於Go語言實現,遵循 Apache 2.0協議。由 OpDemand 公司在2013年7月發起,第一次代碼提交:07/23/2013。OpDemand 公司提供對Deis的商業服務支持。github

  • 目標:
    提供輕量級的 PaaS 實現,爲用戶提供簡單的應用管理和部署。docker

  • 相關:
    Deis 基於 Docker 項目和 CoreOS 項目,並遵循 SaaS 應用的「十二因素」風格。經過簡單的 git push 命令來部署應用,加速集成和部署過程;還支持對應用容器經過單條命令進行擴展。在架構設計上,Deis 整合了一系列 Docker 容器,能夠被部署到公有云、私有云、以及本地環境中,並提供了完整的測試、診斷工具。(十二因素:代碼、依賴、配置、後端服務、生命週期、進程、端口、併發、可丟棄性、開發與生產差別性、日誌、管理)數據庫

Flynn

  • 重要連接:
    官方網站代碼維護編程

  • 基本信息:
    Flynn 項目是基於 Heroku 項目(支持多種編程語言-Ruby、Java、Node.js、Scala、Clojure、Python-的 PaaS 實現),受 Omege 概念(flexible,scalable schedulers for large compute cluters)啓發,由一個創業團隊在2013年7月發起,基於 Go 語言。第一次代碼提交:07/14/2013。後端

  • 目標:
    解決一些部署方面的問題,如在部署 SOA(Service Oriented Architecture:大規模分佈式系統常採用的架構風格,須要功能組件間的鬆耦合)產品至公有云的過程當中,每每須要人工部署和維護大量不一樣的功能部件。而 Flynn 不只能完成簡單可控的部署,還能進行自由的擴展,並提供數據庫管理等功能,能夠方便的實現一套比較理想的 PaaS 方案。安全

  • 相關:
    在設計上,Flynn 項目儘可能保持API驅動和模塊化,以便模塊支持不一樣的實現方案。底層實現一套支持服務發現的資源管理框架,上層實現適合部署和維護的應用組件。服務器

持續集成

Drone 項目利用 Docker 技術,實現持續集成(Continuous Integration)平臺服務。

Drone

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    Drone 是開源的持續集成平臺項目,基於 Go 語言實現,遵循 Apache 2.0協議。最初由 Drone 公司在2014年2月發起。第一次代碼提交:02/03/2014。Drone 公司基於該項目提供支持 Github、Bitbucket 和 Google Code 等第三方代碼託管平臺的持續集成服務。Drone 基於 Docker 和 AUFS 實現,爲用戶提供基於網站的操做。

  • 相關:
    登陸選擇源碼的存放服務;從倉庫列表中選擇項目;配置項目的語言種類;檢查建立命令是否正確並根據須要進行調整;在 Drone 平臺上進行持續集成管理。

管理工具

Docker 自身對單個容器的操做已經提供了功能強大的命令行操做和 API 操做接口(Docker Remote API),對於多個容器(尤爲是容器集羣)的管理方案,官方提供了 Compose + Machine + Swarm;但圖形界面的管理平臺,官方還沒有給出方案。但已有很多開源項目在嘗試提供功能強大且便捷的Docker管理工具,如 Citadel、Shipyard、DockerUI、Panamax、Kubernetes 等。

Citadel

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    Citadel 項目於2014年4月由 Citadel 團隊正式推出,基於Go語言實現。第一次代碼提交:04/21/2014。

  • 目標:
    提供一套在由 Docker 容器構成的集羣中對容器進行調度的工具,主要包括集羣管理組件和調度組件。其中集羣管理組件(Cluster Manager)負責管理集羣的狀態,經過調用 Docker 提供的 API 來鏈接到宿主機,管理容器;調度組件(Scheduler)決策如何進行調度,支持多套調度方法,包括基於標籤、基因而否同一鏡像、基於主機、組合方法等多種調度機制。

  • 相關:
    用戶使用 Citadel 首先要爲調度組件提供容器類型,並指定調度所關心的資源限制;此後,調度器會根據容器類型、服務將容器啓動到合適的主機上。

Shipyard

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    Shipyard 項目於2013年11月發起,部分開發者來自 Citadel 項目團隊。第一次代碼提交:06/23/2013。

  • 目標:
    基於 Citadel 項目提供一套對 Docker 集羣中資源進行管理的工具,包括對 Docker 容器、主機等資源的管理。

  • 相關:
    Shipyard 最大的特色是在覈心部件以外還支持擴展鏡像,能夠根據需求靈活實現應用負載均衡,集中日誌管理和自動化部署等功能。此外,Shipyard 還提供了方便用戶的Web界面,功能更增強大的命令行操做接口,以及統一的 API。Shipyard 支持的命令包括 login、run、stop、restart、info 等。

Kubernetes

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    Kubernetes 項目由 Google 於2014年6月開源,核心基於 Go 語言。第一次代碼提交:06/03/2014。

  • 目標:
    讓用戶在跨容器主機集羣的狀況下,能夠輕鬆的管理、監測、控制容器化應用部署。爲 Docker 工做負載構建一個精緻的、可擴展和便攜式管理的框架。容許客戶像谷歌管理搜索和 Gmail 等超大規模應用程序同樣來管理他們的應用程序。

  • 相關:
    Kubernetes核心概念是容器組(Container Pod),即一批工做於同一物理工做節點的容器。這些容器擁有相同的網絡命名空間、IP地址和存儲配額,能夠根據實際狀況對每個容器組進行端口映射。此外,Kubernetes 有一個與軟件定義網絡(Software Defined Networking,SDN)很是類似的網絡管理概念:經過一個服務代理建立一個能夠分配給任意數目容器的IP地址,前端的應用程序或使用該服務的用戶僅經過這一IP地址調用服務,而不需關心其餘細節。現已有 Microsoft、RedHat、IBM、Docker、Mesosphere、CoreOS 及 SaltStack 公司加入了 Kubernetes 社區。還有Flannel 等項目針對 Kubernetes 提供覆蓋網絡功能。

DockerUI

Panamax

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    Panamax 項目誕生於2014年3月,由CenturyLink實驗室發起,基於 Ruby 語言,遵循 Apache 2.0 協議,能夠部署在 Google、Amazon 等雲平臺或本地環境。第一次代碼提交:03/25/2014。

  • 目標:
    經過一套優雅的界面實現對複雜的 Docker 容器應用的管理,如利用簡單拖拽來完成操做。

  • 相關:
    Panamax 項目基於 Docker、CoreOS、Fleet 提供對容器的自動化管理和任務調度,還提供了開源應用的模板庫,以便集中管理不一樣應用的配置和架構。

Seagull

  • 重要連接:
    代碼維護鏡像及用法

  • 基本信息:
    Seagull 是由小米工程師陳迪豪發佈的開源 Docker 容器和鏡像的 Web 界面監控工具,基於 Go 和 JavaScript 實現,集成了 Beego、AngularJS、Bootstrap、Bower、JQuery 和 Docker 等工具。第一次代碼提交:10/13/2014。

  • 相關:
    Seagull 會在本地運行一個 Web 服務,經過 Beego 實現的 API 服務器不斷請求 Docker 的本地套接字以管理 Docker。

其餘項目

CoreOS

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    CoreOS 項目基於 Python 語言,遵循 Apache 2.0協議,由 CoreOS 團隊在2013年7月發起。

  • 目標:
    提供一個基於 Docker 的輕量級容器化 Linux 發行版,經過輕量級的系統架構和靈活的應用部署能力來簡化數據中心的維護成本和複雜度。

  • 相關:
    CoreOS 基於一套精簡的 Linux 環境,不使用包管理工具,而將全部應用都進行容器化,彼此隔離,從而提升了系統的安全性。此外,運行期間,系統分區是隻讀狀態,利用主從分區支持更穩定的無縫升級。配合 etcd(分佈式高可用的鍵值數據庫)、fleet(CoreOS 集羣的管理工具)等工具,CoreOS 也適用於大規模集羣。

Fig(Compose)

  • 重要連接:
    官方網站

  • 基本信息:
    Fig 項目基於 Python 語言,由 Docker 公司在2013年12月發起。

  • 目標:
    提供一個同時部署多個容器並將其聯合的解決方案。也就是 Docker 的一款編排工具。

  • 相關:
    在一個 YAML 格式的配置文件中定義依賴的鏡像和容器間的鏈接關係,經過一條簡單的指令 fig up 來自動啓動相應容器,完成部署。

Compose(Fig)

  • 重要連接:
    官方網站代碼維護

  • 基本信息:
    Docker 官方提供的編排工具。2015年2月26日,Docker 官方博客宣佈 Docker Compose 已經能夠下載安裝。Compose 的用法跟Fig十分類似,其實 Compose 就是基於 Fig 開發的,而且兼容使用 Fig 的應用程序。根據官方的說明,Fig 已經被從新命名爲 Compose,從 Fig 和 Compose 在 github.com 上維護的代碼是同一套就能夠看出。使用 Fig 的用戶能夠很是簡單的升級到 Compose。

OpenStack支持

  • 重要連接:
    官方網站

  • 基本信息:
    OpenStack 是 Linux 基金會發起的最受歡迎的開源項目,基於 Python 語言,遵循 Apache 2.0 協議,受到 IBM、Cisco、AT&T、HP、Rackspace等企業的大力支持。

  • 目標:
    提供一套開源的 IaaS(Infrastructure as a Service - 架構即服務)方案。

  • 相關:
    OpenStack 不只能夠管理衆多虛擬機,其計算服務(Nova)還支持對 Docker 的驅動,OpenStack 管理引擎的 Heat 子項目還可用於經過模板管理 Docker 容器。

dockerize

  • 重要連接:
    代碼維護

  • 基本信息:
    簡化應用部署到容器過程當中應用依賴的配置信息和應用運行時輸出日誌的管理成本。

  • 目標:
    能夠自動提取環境變量生成配置文件;將應用輸出的日誌信息重定向到STDOUTSTDERR

  • 相關:
    如在構建Nginx鏡像的過程當中,須要建立配置模板文件default.tmpl用於接收來自環境變量的值,而後在Dockerfile最後的CMD中利用dockerize進行封裝,用-template參數指定配置模板位置以及生成的配置文件的位置,利用模板生成應用配置文件,並重定向日誌文件輸出到標準輸出。

libcontainer、libchan、SwarmKit

  • 重要連接:
    libcontainer項目libchan項目SwarmKit項目

  • 基本信息:

    • libcontainer
      Linux內核3.12引入了一套專爲容器技術考慮的API,因爲各類容器技術對API的不一樣實現,使應用的運行不得不考慮其所在的容器和平臺。而libcontainer試圖爲應用提供一套統一的API,使其無需關心具體的容器實現。libcontainer現已整合Parallels公司所支持的libct項目。Docker也計劃逐步遷移到libcontainer上,該項目有助於實現多種平臺(包括Windows平臺)之間容器的遷移。

    • libchan
      libchan所實現的功能相似於已有的各類消息系統,但它宣稱將打造適合現代各類微型併發服務的極輕量級(ultra-lightweight)的網絡服務庫,並支持In-memory Go channel、Unix socket、Raw TCP、TLS、HTTP2/SPDY、Websocket等多種協議。

    • SwarmKit
      SwarmKit原名libswarm,基於libchan項目,定義了分佈式系統中各服務組件之間互相通訊的標準接口,並試圖實現一整套的網絡服務組件。包括Docker Server、Docker Client、SSH tunnel、Etcd、SkyDNS、Mesos、OpenStack Nova、Google Compute等各類服務。用戶能夠經過它在同一機器上同時管理運行在不一樣主機上的Docker容器,任意的替換集羣中的各類服務,包括服務發現、DNS。SwarmKit其實是在開發一套基礎系統,其餘各類集羣服務做爲一個功能模塊與SwarmKit對接。

  • 目標:
    libcontainer的目標是實現容器技術的同一API;libchan的目標是在不一樣的網絡服務之間打造一套「channel」系統(channel是Go語言中的一個概念 - 爲實現併發狀況下不一樣goroutine之間交換數據);SwarmKit的目標是提供一套組件網絡服務的最小工具集。

  • 相關:
    還有其餘一些,如Weave建立一個虛擬網絡來鏈接部署在多臺主機上的Docker容器;Flannel爲Kubernetes提供覆蓋網絡支持;SocketPlane試圖將軟件定義網絡技術引入容器管理等。

官方提供

官方網站給出了不少很詳盡的說明文檔,還有不少官方提供的工具,如:

建議你到官方網站看一下,有不少頗有意思的東西。

相關文章
相關標籤/搜索