容器生態系統包含核心技術、平臺技術和支持技術三個方面。上一節咱們討論了核心技術,今天討論另外兩個部分。docker
容器核心技術使得容器可以在單個 host 上運行。而容器平臺技術可以讓容器做爲集羣在分佈式環境中運行。安全
容器平臺技術包括容器編排引擎、容器管理平臺和基於容器的 PaaS。網絡
基於容器的應用通常會採用微服務架構。在這種架構下,應用被劃分爲不一樣的組件,並以服務的形式運行在各自的容器中,經過 API 對外提供服務。爲了保證應用的高可用,每一個組件均可能會運行多個相同的容器。這些容器會組成集羣,集羣中的容器會根據業務須要被動態地建立、遷移和銷燬。架構
你們能夠看到,這樣一個基於微服務架構的應用系統其實是一個動態的可伸縮的系統。這對咱們的部署環境提出了新的要求,咱們須要有一種高效的方法來管理容器集羣。而這,就是容器編排引擎要乾的工做。app
所謂編排(orchestration),一般包括容器管理、調度、集羣定義和服務發現等。經過容器編排引擎,容器被有機的組合成微服務應用,實現業務需求。分佈式
docker swarm 是 Docker 開發的容器編排引擎。微服務
kubernetes 是 Google 領導開發的開源容器編排引擎,同時支持 Docker 和 CoreOS 容器。工具
mesos 是一個通用的集羣資源調度平臺,mesos 與 marathon 一塊兒提供容器編排引擎功能。命令行
以上三者是當前主流的容器編排引擎。設計
容器管理平臺是架構在容器編排引擎之上的一個更爲通用的平臺。一般容器管理平臺可以支持多種編排引擎,抽象了編排引擎的底層實現細節,爲用戶提供更方便的功能,好比 application catalog 和一鍵應用部署等。
Rancher 和 ContainerShip 是容器管理平臺的典型表明。
基於容器的 PaaS 爲微服務應用開發人員和公司提供了開發、部署和管理應用的平臺,使用戶沒必要關心底層基礎設施而專一於應用的開發。
Deis、Flynn 和 Dokku 都是開源容器 PaaS 的表明。
下面這些技術被用於支持基於容器的基礎設施。
容器的出現使網絡拓撲變得更加動態和複雜。用戶須要專門的解決方案來管理容器與容器,容器與其餘實體之間的連通性和隔離性。
docker network 是 Docker 原生的網絡解決方案。除此以外,咱們還能夠採用第三方開源解決方案,例如 flannel、weave 和 calico。不一樣的方案設計和實現方式不一樣,各有優點和特定,咱們能夠根據實際須要來選型。
動態變化是微服務應用的一大特色。當負載增長時,集羣會自動建立新的容器;負載減少,多餘的容器會被銷燬。容器也會根據 host 的資源使用狀況在不一樣 host 中遷移,容器的 IP 和端口也會隨之發生變化。
在這種動態的環境下,必需要有一種機制讓 client 可以知道如何訪問容器提供的服務。這就是服務發現技術要完成的工做。
服務發現會保存容器集羣中全部微服務最新的信息,好比 IP 和端口,並對外提供 API,提供服務查詢功能。
etcd、consul 和 zookeeper 是服務發現的典型解決方案。
監控對於基礎架構很是重要,而容器的動態特徵對監控提出更多挑戰。
針對容器環境,已經涌現出不少監控工具和方案。
docker ps/top/stats 是 Docker 原生的命令行監控工具。除了命令行,Docker 也提供了 stats API,用戶能夠經過 HTTP 請求獲取容器的狀態信息。
sysdig、cAdvisor/Heapster 和 Weave Scope 是其餘開源的容器監控方案。
容器常常會在不一樣的 host 之間遷移,如何保證持久化數據也可以動態遷移,是 Flocker 這類數據管理工具提供的能力。
日誌爲問題排查和事件管理提供了重要依據。
docker logs 是 Docker 原生的日誌工具。而 logspout 對日誌提供了路由功能,它能夠收集不一樣容器的日誌並轉發給其餘工具進行後處理。
對於年輕的容器,安全性一直是業界爭論的焦點。
OpenSCAP 可以對容器鏡像進行掃描,發現潛在的漏洞。
前面咱們已經鳥瞰了整個容器生態系統,對容器所涉及的技術體系有了全面的認識。那咱們這本教程會討論其中的哪些內容呢?
會覆蓋容器生態系統 91.6% 的技術!具體請參考第一篇中的 「覆蓋內容」部分,這裏就再也不贅述了。
下一節開始實戰,運行咱們的第一個容器。