容器生態圈專案一覽:引擎、編排、OS、Registry、監控

Denny Britz發表於2015-10-12

Docker 是近一兩年來發展最快的技術。很多公司都在使用 Docker(或容器)技術。有的只是用 Docker 來構建本地開發環境,但越來越多的公司是在利用容器技術徹底改造已有的架構和部署流程。本文對當今的容器生態環境做一個簡單介紹。

引擎 / 執行環境

容器引擎是容器技術的核心。引擎通常以一些說明性的描述,比如Dockerfile,來建立和執行容器。談論 Docker 時,一般指的就是 Docker 引擎。

  • Docker Engine 是當前最流行的引擎,也是事實的工業標準。
  • rkt 是CoreOS 團隊主導的開源引擎,用於替代 Docker 引擎。

支援 Docker 的雲服務商

雲服務商已經在他們的平臺上提供執行容器的解決方案。一些是內部的解決方案,其它的則是基於開源軟體。當然在雲主機上安裝 Docker來執行容器是沒有任何問題的。不過,大多數雲服務商的容器服務更進一步地提供了更為簡潔友好的使用者管理介面。

容器編排工具

容器編排工具現在是最具競爭的領域之一。管理少數幾個容器很簡單,但是排程、管理以及監控大規模容器很具有挑戰性。容器編排工具處理多種多樣任務,比如查詢最優的位置或者伺服器來執行容器,處理失敗的任務,分享儲存卷或者建立負載均衡與容器間通訊的覆蓋網路。

常見的編排專案有:

  • Kubernetes Google 開源的工具,它是基於Google的內部容器設施,並且在功能特性方面是當前最先進的工具。
  • Docker Swarm 允許在Docker叢集中排程容器,與 Docker 環境緊密整合。
  • Rancher 在機器叢集上以 stack(linked容器)為單位管理容器。它有直觀的介面和良好的文件以及本身執行在容器內部。
  • Mesosphere 通用的資料中心管理系統。不是專為 Docker 開發,但是能輕鬆管理容器,也可以與其它編排系統如 Kubernetes 整合,或者與像Hadoop的傳統服務整合。
  • CoreOS fleet CoreOS作業系統的一部分,管理在 CoreOS 叢集中任何排程命令(比如執行Docker或者rkt容器)。
  • Nomad 通用的應用排程工具,內建支援 Docker。
  • Centurion Newrelic 的內部部署工具。
  • Flocker 執行在不同主機的容器間資料/Volume遷移工具。
  • Weave Run 提供微服務架構的服務發現、路由、負載均衡和地址管理。

作業系統

你可以在任何作業系統來執行容器,但是企業正越來越多的容器化他們整個基礎設施。因此,為Docker或者相關服務執行一個最小化作業系統是非常有意義的。

  • CoreOS 為自動更新設計以及著重在機器叢集之間的執行容器。不僅與systemd的fleet排程器交付,而且支援其它編排系統。
  • Project Atomic 執行Docker、Kubernetes、rpm、systemd的輕量級作業系統。
  • Rancher OS 只有 20MB 大小用容器執行整個作業系統。 它區分系統容器 和 使用者容器,他們執行在分離的Docker守護程式中。
  • Project Photon VMWare 開源的工具。

容器映象倉庫 Registry

映象Registry是“容器映象的GitHub”,你可以與你的團隊或者其他人分享容器映象。

  • Docker Registry 最流行的開源registry。你可以在自己的設施上執行或者使用Docker Hub。
  • Docker Hub 提供了直觀的介面、自動化構建、私有倉庫以及眾多官方映象。
  • Quay.io CoreOS 開發的容器倉庫。
  • CoreOS Enterprise Registry 著重提供細化許可權和審計跟蹤。

監控

容器輸出的日誌可以很方便與已有日誌收集工具整合。容器監控軟體通常關注容器的資源使用情況(CPU、記憶體)。

  • cAdvisor Google 開源專案。分析容器的資源使用和效能特性,可以用 InfluxDB 作為資料儲存,以便後續分析。
  • Datadog Docker 收集容器的執行資訊,傳送到 Datadog 分析。
  • NewRelic Docker 傳送容器統計資訊到 NewRelic 的雲服務。
  • Sysdig 監控容器資源使用情況。
  • Weave Scope 自動生成容器關係圖,有助於理解、監控和控制應用服務。
  • AppFormix 實時基礎設施監控,支援 Docker 容器。

相關文章