Docker生態系統

2021-07-13 21:15:29 字數 2018 閱讀 1977



docker是以docker容器為資源分割和排程的基本單位,封裝軟體的執行時環境.用於快速構建,發布,執行分布式應用的平台。docker的執行時容器的本質是程序.在linux中,通過namespace進行資源隔離,cgroups進行資源限制,使docker容器看上去像是乙個執行在宿主機中的虛擬機器.

以上的這些特性,使企業級的微服務架構的實現,提供了真實的具有實踐性的可能.

registry 作為 docker 的核心元件之一負責映象內容的儲存與分發,是企業搭建私有docker映象倉庫的解決方案.

docker registry目前分為v1和v2兩個版本.v2版本相比v1版本有如下幾方面的改進:

v1版本push layer操作只判斷id,不判斷layer的內容.由於映象內容與id無關,所以重新build之後id變化,內容沒變的layer將會重複提交.造成儲存資源的浪費.v2採用雜湊值方式,被稱為 digest 是乙個和映象內容相關的字串,相同的內容會生成相同的 digest。所以是映象layer判斷是內容相關的.

提供了鑑權管理和許可權控制

推薦您看:《docker registry v2私有倉庫搭建》

為什麼需要服務發現?

當我們部署少量docker容器的時候,我們可以去指定容器的對映埠.但是我們啟動大規模的容器集群的時候,我們希望容器的對外服務埠是隨機分配的,並且同一臺主機內不能發生埠衝突(服務編排及資源管理的系統可以幫我們完成埠的隨機分配,這個不是這裡要說的事情).

埠隨機的分配實現了,那麼使用者該如何才能知道,這個隨機的埠是什麼?哪個ip,哪個埠對應哪個服務?這就需要服務發現元件來實現!

基於上述的需求,服務發現的元件應該具備如下基本功能

docker 1.9發布之前,網路的問題一直是困擾docker愛好者的主要問題.實現的複雜度較高,這一切都在發布docker1.9的overlay網路之後得到改善.

docker 1.9之前提供了兩種容器之間的網路連線方式

通過docker容器對映埠到宿主機,即暴露埠到宿主機.舉例:容器a對映8080到宿主機xx.xx.xx.xx的80埠,其他的容器想訪問容器a的埠,就訪問xx.xx.xx.xx:80。

通過link的方式,連線容器網路.這種方式只適合,單個宿主機之內,無法跨宿主機實現容器之間的互訪!

砸一看,似乎有這兩種方式就夠了.雖然採用第二種無法跨主機,但是第一種還算ok吧?如果乙個服務暴露出來很多的埠怎麼辦?都對外對映麼?那樣就會造成埠管理上的災難!

這顯然是不行的,這時很多的工具出現了,來做sdn(軟體定義網路)網路.容器之間的互訪網路.比較有名氣的有:

但是,docker1.9發布之後,這些docker網路工具的存在意義逐漸弱化(雖然這些軟體還是有一些自己的特點)。docker官方實現了自己的跨主機容器網路方案。

實現方式,請看我的另外兩篇

《基於consul的docker-overlay跨多宿主機容器網路》

《基於etcd的docker-overlay跨多宿主機容器網路》

容器編排和管理系統主要解決以下幾個問題:

目前容器編排與管理的系統主要是三個:

mesos + marathon,mesos的本質是乙個基於資源的排程管理系統,可以實現docker容器的基於資源的細粒度的容器排程.marathon用來首席執行官服務,實現健康檢查與容器依賴啟動,擴充套件與縮放.在大型的容器集群管理上,有更穩定的表現.

推薦一篇介紹mesos的文章:《煮餃子與mesos之間妙不可言的關係》

kubernets是谷歌開發的容器編排管理系統.使用golang開發,具有輕量化、模組化、便攜以及可擴充套件的特點。它提出了一系列諸如:pods,replication controllers,labels,services之類的概念,所以學習的曲線也相對陡峭.kubernetes的效能要比swarm差,是因為它擁有更加複雜的架構;效能比mesos差,是因為它結構層次更深;

docker + swarm + compose,docker原生的容器管理系統,簡單易用,學習的曲線低,和docker相容度高,但是實際用於生產環境的案例不多。

Hadoop生態系統

摘要 介紹hadoop生態系統,從hadoop生態系統有什麼成員,成員能做什麼和hadoop生態系統能夠提供大資料問題解決方案兩方面來認識。hadoop生態圖,通俗地說,就是hadoop核心模組和衍生的子專案。一幅hadoop生態圖,讓我想到了兩個問題。問題一 hadoop生態系統包括哪些成員?每個...

SOA生態系統

richard veryard在他的最近的一篇日誌裡提到 soa世界終於開始跟上一點生態系統的思想了.以生物性的方式來建立業務和軟體服務。根據richard的說法,這一方式與解決方案驅動的soa方式截然不同。在這種情況下,不是基於特定的解決方案來定義服務,而是基於它們所屬於的生態系統 可與 自頂向下...

Hadoop 生態系統

hadoop是乙個分布式儲存和計算平台。主要解決海量資料的儲存與分析計算問題 1 高可靠性 hadoop底層維護多個資料副本,所以即使hadoop某個計算元素或儲存出現故障,也不會導致資料的丟失。2 高擴充套件性 在集群間分配任務資料,可方便的擴充套件數以乾計的節點。3 高效性 在mapreduce...