1. 程式人生 > >有關Docker的八個令人難以置信的事實

有關Docker的八個令人難以置信的事實

這一年Docker技術蓬勃發展,Datadog公司從其獨特的視角,基於其監控的第一手資料,分析報告了Docker使用相關的八大事實,同時也詳細介紹了他們取樣,分析的方法論。很有意思,值得一讀。

數以千計的公司使用Datadog來跟蹤基礎架構,所以我們能夠實時看到正在湧現的軟體趨勢。今天很激動得和大家分享關於Docker真正使用的情況 — 沒有吹噓,只列事實。

Docker大概是2015年談論最多的基礎架構技術。我們啟動這個專案來調研有多少Docker真正用在生產環境裡,真正使用的增長速度是怎樣的。我們發現了這些問題的答案– 並且同時發現了一些更加精彩的內容。

本文研究基於7000個公司的取樣,並且跟蹤了真實使用場景,而不僅僅只是看使用報告。就我們所知,這是所發表的最為精準的Docker使用情況彙報。

本文使用如下詞彙描述企業使用狀態:“已使用(adopted)”,“嘗試中(dabbling)”,和“已放棄(abandoned)”。下文方法論章節講述瞭如何評測使用狀態。

事實一:Docker的真正使用在一年裡上升了五倍

在2014年九月初,Datadog 1.8%的客戶已經使用了Docker。一年後,這個數字增長到8.3%。在12個月裡幾乎增長了五倍。


Docker

事實二:Docker在我們監控的6%的主機上執行

這是很讓人吃驚的事實:一年前Docker幾乎還沒有任何市場份額,現在它已經執行在我們監控的6%的主機上。6%聽上去不是個絕對高的數字,但是基於我們監控了120種不同技術,這個數字的確可以說明它在使用者技術棧上已經非常重要了。

但是,如下表所示,主機數百分比的增長自上個季度開始似乎有所停滯。這可能是季節因素導致的,大型基礎架構專案通常在暑假之後會停止。我們很感興趣來繼續觀察這個季度的情況。
Docker

事實三:越大型的公司使用越早

這個現象駁斥了公司越大動作越慢的說法。一個使用越多主機的公司,更有可能已經嘗試了Docker,也更有可能已經使用了Docker。這個現象很令人吃驚,因為一個公司使用了越多的主機,那麼只有它使用了更多數量的Docker容器時,才會將其歸類為“使用者”。如下文方法論章節所述,這個發現在不同基礎架構規模分割閥值的情況下都適用。


Docker

事實四:嘗試Docker的2/3的公司最終使用了它

這條還是好訊息。我們驚訝得發現這麼多嘗試Docker的公司最終都迅速使用了它。大部分想要使用Docker的公司在最初生產環境上使用的30天內就完成了轉變,其餘使用者在60天內完成了轉變。
Docker

事實五:五個月內使用者容器數量擴大了三倍

使用者和嘗試者都在其第一次使用到第六個月使用之間,生產環境執行容器的平均數量擴大了三倍。這樣使用量的增長 — 即便在嘗試者裡 — 對於Docker而言也是大好訊息。
Docker

事實六:使用最為廣泛的映象是Registry,NGINX和Redis

Docker裡執行的最常用技術是:

  • Registry:執行Docker的公司中25%的公司正在使用Registry,可能用其來代替Docker Hub。
  • NGINX:Docker看來被用來包含了很多HTTP伺服器。很有意思的是Apache(httpd)並不是前十名。
  • Redis:流行的記憶體內鍵值資料儲存,通常用來作為記憶體內資料庫,訊息佇列,或者快取。
  • Ubuntu:依然是構建映象的預設選擇。
  • Logspout:用來從主機上的所有容器裡收集日誌,並且將日誌路由到任意需要的地方。
  • MongoDB:使用廣泛的NoSQL資料庫。
  • Elasticsearch:全文字搜尋。
  • CAdvisor:Kubernetes用來從容器裡收集度量引數。
  • MySQL:使用最為廣泛的開源資料庫。
  • Postgres:使用第二廣泛的開源資料庫。將Postgres和MySQL的數量相加,可見使用Docker執行關係型資料庫非常常見。 Docker

事實七:Docker主機通常一次執行四個容器

使用Docker的公司在每個主機上平均同時執行四個容器。這個發現似乎表明Docker實際上通常被作為共享計算資源的輕量級方式;其價值不僅僅在於提供可知的,版本化的執行時環境。


Docker

事實八:VM的生命週期比容器長四倍

在使用Docker的公司裡,容器的平均生命週期是3天,但是在所有公司裡,傳統和基於雲的VM的生命週期為12天。
正如事實七所討論,通常在主機上會同時執行4個容器。因此可以在一般VM的生命週期裡執行16個容器(4代4個同步容器)。但是基於不均衡的分佈情況,通常實際在VM的生命週期裡會執行9個容器。


Docker

容器更短的生命週期以及增長的密度對於基礎架構監控而言意義深遠。它表示某個事物的個數呈數量級增長,需要單獨監控。監控方案是圍繞主機的,而不是圍繞可能快速就不可用的角色。因此我們期待Docker能持續驅動幾年前雲端計算開始引發的監控實踐的進步。

方法論

樣本

如介紹所述,使用的資料來自於7000家公司的取樣,因此本文應該是已發表的Docker使用情況調查裡最精準的。但是,Datadog的客戶傾向於“早期使用者”,以及更謹慎對待軟體基礎架構的公司。由於資料來自於我們的客戶,本文的所有結論會帶有傾向性,是全球市場的不完全樣本。

平均值

當提到客戶基準裡的平均數值時(比如,平均容器生命週期),我們並不是指樣本的均值。而是會計算出單獨使用者的平均值,然後報告客戶數值的中位數。我們發現如果取真正的均值的話,結果會被少數幾個公司的不常見的Docker使用方式帶來的數值嚴重影響。比如,將容器用作處理佇列單元工作會導致某個公司每小時使用上千個容器。

採用分段

本文將企業分類為“採用者”,“嘗試者”和“放棄者”。會在月末基於每個企業本月的Docker活動重新將其分類。

  • 採用者:該月執行的容器的均值至少是執行主機數目的50%以上,或者該月至少有和獨立主機數量一樣的獨立容器。
  • 嘗試者:該月使用了Docker,但是沒有達到“採用者”要求的門限
  • 放棄者:目前仍舊活躍的公司,以前使用過Docker,但是上個月完全沒有使用。

注意採用分段門限並非來自於資料的自然分組;資料裡包含各種使用資料。我們使用了直覺覺得對於讀者有意義的資料。

很有意思的是,本文的發現令人驚訝得適應於不同的採用分段門限。比如,不管採用者門限更低(25%容器平均值,或者和主機數相比,有0.75x的單獨容器)或者更高(75%容器均值,或者和主機數相比,有1.5x的單獨容器),大部分發現都是不變的:

  • 事實 #1:一年內真正採用量還是上升了5倍
  • 事實#2:採用分段和這些發現沒有關係
  • 事實#3:大型公司成為Docker採用者或者嘗試者的數量還是比小型公司多2-4倍。圖表幾乎沒有變化。
  • 事實#4:發現幾乎沒變:採用百分比僅僅變化了±3%
  • 事實#5:第一個月到第六個月之間,採用者的容器數量仍然增長了三倍
  • 事實#6:採用分段和這些發現不相關。
  • 事實#7,8:結果沒變。

我們也針對絕對數量門限作了分析,使用分段結果,比如“採用者在該月至少平均運行了20個容器”。但是大部分發現仍然驚人得類似(實際上,幾乎一樣),這樣的策略使得我們更應該在小型企業裡,如果其基礎架構執行Docker的比例很大時,將其歸類為嘗試者。

計數

只運行了Datadog Agent的容器被排除在本次調查之外,因此只執行Agent的主機也被排除了。

事實 #1

我們認為能夠看到Docker使用量的如此大幅度增長恰恰因為Datadog很擅長於監控Docker。可能新增長是由需要Docker監控的Docker新使用者帶來的,他們可能會為此專門使用Datadog。但是,當我們看Datadog長期客戶時,採用百分比幾乎一樣。

事實 #2

對於監控的每一種技術,我們將使用量在前1%的企業排除在外。也就是說,如果一小部分公司以非尋常方式使用某種特定技術,並且重度使用時,他們會被從計算中排除。

也要注意,當限制採用為所有使用Docker的公司,或者當排除使用Docker公司的5%,10%或25%時,“執行Docker主機百分比”圖的基本走勢保持不變。上個季度裡,執行Docker的主機百分比有明顯變平的趨勢。

事實 #3

對於不同的基礎架構規模切入點,該發現保持一致。不同切入點如下。本文使用切入點的中間段。

基礎架構規模切入點 已經嘗試Docker的公司的百分比
1–49, 50–99, 100+ 11%, 22%, 43%
1–99, 100–499, 500+ 11%, 28%, 56%
1–249, 250-749, 750+ 12%, 37%, 58%