有關(guān)Docker的八個令人難以置信的事實(shí)
這一年Docker技術(shù)蓬勃發(fā)展,Datadog公司從其獨(dú)特的視角,基于其監(jiān)控的***手?jǐn)?shù)據(jù),分析報告了Docker使用相關(guān)的八大事實(shí),同時也詳細(xì)介紹了他們?nèi)?,分析的方法論。很有意思,值得一讀。
數(shù)以千計的公司使用Datadog來跟蹤基礎(chǔ)架構(gòu),所以我們能夠?qū)崟r看到正在涌現(xiàn)的軟件趨勢。今天很激動得和大家分享關(guān)于Docker真正使用的情況 — 沒有吹噓,只列事實(shí)。
Docker大概是2015年談?wù)撟疃嗟幕A(chǔ)架構(gòu)技術(shù)。我們啟動這個項(xiàng)目來調(diào)研有多少Docker真正用在生產(chǎn)環(huán)境里,真正使用的增長速度是怎樣的。我們發(fā)現(xiàn)了這些問題的答案– 并且同時發(fā)現(xiàn)了一些更加精彩的內(nèi)容。
本文研究基于7000個公司的采樣,并且跟蹤了真實(shí)使用場景,而不僅僅只是看使用報告。就我們所知,這是所發(fā)表的最為精準(zhǔn)的Docker使用情況匯報。
本文使用如下詞匯描述企業(yè)使用狀態(tài):“已使用(adopted)”,“嘗試中(dabbling)”,和“已放棄(abandoned)”。下文方法論章節(jié)講述了如何評測使用狀態(tài)。
事實(shí)一:Docker的真正使用在一年里上升了五倍
在2014年九月初,Datadog 1.8%的客戶已經(jīng)使用了Docker。一年后,這個數(shù)字增長到8.3%。在12個月里幾乎增長了五倍。
事實(shí)二:Docker在我們監(jiān)控的6%的主機(jī)上運(yùn)行
這是很讓人吃驚的事實(shí):一年前Docker幾乎還沒有任何市場份額,現(xiàn)在它已經(jīng)運(yùn)行在我們監(jiān)控的6%的主機(jī)上。6%聽上去不是個絕對高的數(shù)字,但是基于我們監(jiān)控了120種不同技術(shù),這個數(shù)字的確可以說明它在用戶技術(shù)棧上已經(jīng)非常重要了。
但是,如下表所示,主機(jī)數(shù)百分比的增長自上個季度開始似乎有所停滯。這可能是季節(jié)因素導(dǎo)致的,大型基礎(chǔ)架構(gòu)項(xiàng)目通常在暑假之后會停止。我們很感興趣來繼續(xù)觀察這個季度的情況。
事實(shí)三:越大型的公司使用越早
這個現(xiàn)象駁斥了公司越大動作越慢的說法。一個使用越多主機(jī)的公司,更有可能已經(jīng)嘗試了Docker,也更有可能已經(jīng)使用了Docker。這個現(xiàn)象很令人吃驚,因?yàn)橐粋€公司使用了越多的主機(jī),那么只有它使用了更多數(shù)量的Docker容器時,才會將其歸類為“使用者”。如下文方法論章節(jié)所述,這個發(fā)現(xiàn)在不同基礎(chǔ)架構(gòu)規(guī)模分割閥值的情況下都適用。
事實(shí)四:嘗試Docker的2/3的公司最終使用了它
這條還是好消息。我們驚訝得發(fā)現(xiàn)這么多嘗試Docker的公司最終都迅速使用了它。大部分想要使用Docker的公司在最初生產(chǎn)環(huán)境上使用的30天內(nèi)就完成了轉(zhuǎn)變,其余使用者在60天內(nèi)完成了轉(zhuǎn)變。
事實(shí)五:五個月內(nèi)用戶容器數(shù)量擴(kuò)大了三倍
使用者和嘗試者都在其***次使用到第六個月使用之間,生產(chǎn)環(huán)境運(yùn)行容器的平均數(shù)量擴(kuò)大了三倍。這樣使用量的增長 — 即便在嘗試者里 — 對于Docker而言也是大好消息。
事實(shí)六:使用最為廣泛的鏡像是Registry,NGINX和Redis
Docker里運(yùn)行的最常用技術(shù)是:
- Registry:運(yùn)行Docker的公司中25%的公司正在使用Registry,可能用其來代替Docker Hub。
- NGINX:Docker看來被用來包含了很多HTTP服務(wù)器。很有意思的是Apache(httpd)并不是前十名。
- Redis:流行的內(nèi)存內(nèi)鍵值數(shù)據(jù)存儲,通常用來作為內(nèi)存內(nèi)數(shù)據(jù)庫,消息隊(duì)列,或者緩存。
- Ubuntu:依然是構(gòu)建鏡像的默認(rèn)選擇。
- Logspout:用來從主機(jī)上的所有容器里收集日志,并且將日志路由到任意需要的地方。
- MongoDB:使用廣泛的NoSQL數(shù)據(jù)庫。
- Elasticsearch:全文本搜索。
- CAdvisor:Kubernetes用來從容器里收集度量參數(shù)。
- MySQL:使用最為廣泛的開源數(shù)據(jù)庫。
- Postgres:使用第二廣泛的開源數(shù)據(jù)庫。將Postgres和MySQL的數(shù)量相加,可見使用Docker運(yùn)行關(guān)系型數(shù)據(jù)庫非常常見。
事實(shí)七:Docker主機(jī)通常一次運(yùn)行四個容器
使用Docker的公司在每個主機(jī)上平均同時運(yùn)行四個容器。這個發(fā)現(xiàn)似乎表明Docker實(shí)際上通常被作為共享計算資源的輕量級方式;其價值不僅僅在于提供可知的,版本化的運(yùn)行時環(huán)境。
事實(shí)八:VM的生命周期比容器長四倍
在使用Docker的公司里,容器的平均生命周期是3天,但是在所有公司里,傳統(tǒng)和基于云的VM的生命周期為12天。
正如事實(shí)七所討論,通常在主機(jī)上會同時運(yùn)行4個容器。因此可以在一般VM的生命周期里運(yùn)行16個容器(4代4個同步容器)。但是基于不均衡的分布情況,通常實(shí)際在VM的生命周期里會運(yùn)行9個容器。
容器更短的生命周期以及增長的密度對于基礎(chǔ)架構(gòu)監(jiān)控而言意義深遠(yuǎn)。它表示某個事物的個數(shù)呈數(shù)量級增長,需要單獨(dú)監(jiān)控。監(jiān)控方案是圍繞主機(jī)的,而不是圍繞可能快速就不可用的角色。因此我們期待Docker能持續(xù)驅(qū)動幾年前云計算開始引發(fā)的監(jiān)控實(shí)踐的進(jìn)步。
方法論
樣本
如介紹所述,使用的數(shù)據(jù)來自于7000家公司的采樣,因此本文應(yīng)該是已發(fā)表的Docker使用情況調(diào)查里最精準(zhǔn)的。但是,Datadog的客戶傾向于“早期使用者”,以及更謹(jǐn)慎對待軟件基礎(chǔ)架構(gòu)的公司。由于數(shù)據(jù)來自于我們的客戶,本文的所有結(jié)論會帶有傾向性,是全球市場的不完全樣本。
平均值
當(dāng)提到客戶基準(zhǔn)里的平均數(shù)值時(比如,平均容器生命周期),我們并不是指樣本的均值。而是會計算出單獨(dú)用戶的平均值,然后報告客戶數(shù)值的中位數(shù)。我們發(fā)現(xiàn)如果取真正的均值的話,結(jié)果會被少數(shù)幾個公司的不常見的Docker使用方式帶來的數(shù)值嚴(yán)重影響。比如,將容器用作處理隊(duì)列單元工作會導(dǎo)致某個公司每小時使用上千個容器。
采用分段
本文將企業(yè)分類為“采用者”,“嘗試者”和“放棄者”。會在月末基于每個企業(yè)本月的Docker活動重新將其分類。
- 采用者:該月運(yùn)行的容器的均值至少是運(yùn)行主機(jī)數(shù)目的50%以上,或者該月至少有和獨(dú)立主機(jī)數(shù)量一樣的獨(dú)立容器。
- 嘗試者:該月使用了Docker,但是沒有達(dá)到“采用者”要求的門限
- 放棄者:目前仍舊活躍的公司,以前使用過Docker,但是上個月完全沒有使用。
注意采用分段門限并非來自于數(shù)據(jù)的自然分組;數(shù)據(jù)里包含各種使用數(shù)據(jù)。我們使用了直覺覺得對于讀者有意義的數(shù)據(jù)。
很有意思的是,本文的發(fā)現(xiàn)令人驚訝得適應(yīng)于不同的采用分段門限。比如,不管采用者門限更低(25%容器平均值,或者和主機(jī)數(shù)相比,有0.75x的單獨(dú)容器)或者更高(75%容器均值,或者和主機(jī)數(shù)相比,有1.5x的單獨(dú)容器),大部分發(fā)現(xiàn)都是不變的:
- 事實(shí) #1:一年內(nèi)真正采用量還是上升了5倍
- 事實(shí)#2:采用分段和這些發(fā)現(xiàn)沒有關(guān)系
- 事實(shí)#3:大型公司成為Docker采用者或者嘗試者的數(shù)量還是比小型公司多2-4倍。圖表幾乎沒有變化。
- 事實(shí)#4:發(fā)現(xiàn)幾乎沒變:采用百分比僅僅變化了±3%
- 事實(shí)#5:***個月到第六個月之間,采用者的容器數(shù)量仍然增長了三倍
- 事實(shí)#6:采用分段和這些發(fā)現(xiàn)不相關(guān)。
- 事實(shí)#7,8:結(jié)果沒變。
我們也針對絕對數(shù)量門限作了分析,使用分段結(jié)果,比如“采用者在該月至少平均運(yùn)行了20個容器”。但是大部分發(fā)現(xiàn)仍然驚人得類似(實(shí)際上,幾乎一樣),這樣的策略使得我們更應(yīng)該在小型企業(yè)里,如果其基礎(chǔ)架構(gòu)運(yùn)行Docker的比例很大時,將其歸類為嘗試者。
計數(shù)
只運(yùn)行了Datadog Agent的容器被排除在本次調(diào)查之外,因此只運(yùn)行Agent的主機(jī)也被排除了。
事實(shí) #1
我們認(rèn)為能夠看到Docker使用量的如此大幅度增長恰恰因?yàn)镈atadog很擅長于監(jiān)控Docker??赡苄略鲩L是由需要Docker監(jiān)控的Docker新用戶帶來的,他們可能會為此專門使用Datadog。但是,當(dāng)我們看Datadog長期客戶時,采用百分比幾乎一樣。
事實(shí) #2
對于監(jiān)控的每一種技術(shù),我們將使用量在前1%的企業(yè)排除在外。也就是說,如果一小部分公司以非尋常方式使用某種特定技術(shù),并且重度使用時,他們會被從計算中排除。
也要注意,當(dāng)限制采用為所有使用Docker的公司,或者當(dāng)排除使用Docker公司的5%,10%或25%時,“運(yùn)行Docker主機(jī)百分比”圖的基本走勢保持不變。上個季度里,運(yùn)行Docker的主機(jī)百分比有明顯變平的趨勢。
事實(shí) #3
對于不同的基礎(chǔ)架構(gòu)規(guī)模切入點(diǎn),該發(fā)現(xiàn)保持一致。不同切入點(diǎn)如下。本文使用切入點(diǎn)的中間段。
基礎(chǔ)架構(gòu)規(guī)模切入點(diǎn) 已經(jīng)嘗試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%