這份報告對10000家公司和1.85億個容器進行取樣,是目前為止規模最大最準確的有關Docker使用情況的調查。報告的主要內容如下。
最近一年Docker采用率增加了40%
在2016年3月初,有13.6%的Datalog客戶使用了Docker。一年之后,這個數字增長到了18.8%。在12個月內增長了將近40%。
由Datadog監控的15%主機運行了Docker
兩年前,Docker只有3%的市場份額,現在增長到了15%。從下圖可以看到,Docker增長率在一開始有所波動,但在2015年秋天開始趨于穩定。從那個時候開始,Docker的采用率一直呈穩定的線性增長,由Datadog監控的六分之一機器幾乎都運行了Docker。
大公司仍然是主要的使用者
大公司的增長趨于放緩,但在Docker方面,從2015年發布的第一份報告開始一直保持領先。一個公司使用的主機越多,就越有可能使用Docker。將近60%的企業使用了500臺或更多的主機,他們被歸類為Docker玩家或Docker采用者。
據上一份報告顯示,使用了大量主機的企業是推動Docker采用的主要力量,而最近的數據表明,使用了中等數量(100到499臺)主機的企業也成為重要的貢獻者。大中型公司的采用率現在幾乎趨于一致。
編排引擎正在崛起
隨著Docker逐步成為生產環境不可或缺的組成部分,企業正在尋找能夠幫助他們有效管理和編排容器的工具。截止2017年3月,使用了Docker的Datalog客戶中有40%也使用了Kubernetes、Mesos、Amazon ECS、Google Container Engine或其他編排引擎。有些企業使用Docker內置的編排引擎,不過它們未能生成可識別的度量指標,所以無法對其進行可靠的統計。
對于同時使用了Docker和AWS的企業來說,他們更傾向于選擇Amazon ECS,正如所預期的那樣:超過35%的公司使用了ECS。不過也有很大一部分使用了其他編排引擎,特別是Kubernetes。
采用者的容器數量在9個月內增長到5倍
從使用Docker的第1個月到第9個月,采用者的容器平均數量幾乎增長到了原先的5倍。采用率呈線性增長,而且在第10個月后沒有下降的勢頭。另一些數據表明,這種增長模式從上一份報告以來一直保持穩定。
使用范圍最廣的鏡像分別是NGINX、Redis和Elasticsearch
最常用的Docker鏡像如下:
NGINX:似乎Docker被用來運行多種HTTP服務器,從2015開始對Docker鏡像的使用情況進行跟蹤以來,NGINX一直是最有力的競爭者。Redis:這個非常流行的鍵值數據存儲引擎經常被用來作為內存數據庫、消息隊列或緩存。Elasticsearch:全文檢索越來越流行,首次進入前3名。Registry:使用Docker的公司當中有18%也使用了Registry,Registry用于保存和分發其他Docker鏡像。Registry幾乎在每一份報告中都名列前茅。Postgres:越來越流行的開源關系型數據庫,采用量首次超過了MySQL。MySQL:在Docker基礎設施里使用很廣的開源關系型數據庫。如果把MySQL和Postgre的數字加在一起,可見在Docker中運行關系型數據庫是非常常見的。etcd:分布式鍵值存儲引擎,用于為Docker集群提供一致性的配置。 Fluentd:這個開源的“統一日志層”被設計用于解耦數據源和后端的數據存儲。這是Fluentd第一次出現在排名清單里,取代了Logspout的位置。MongoDB:廣泛使用的NoSQL數據存儲。RabbitMQ:在Docker環境里廣泛使用的消息代理。一臺主機上一般會同時運行7個容器
中型公司會在每一臺主機上運行7個容器,而在9個月前只有5個。這一現象說明Docker一般是被作為輕量級的容器來共享計算資源,而不僅僅是作為可感知、版本化的運行時環境。另外,有25%的公司平均同時運行超過14個容器。
容器的重置速度比虛擬機快9倍
容器的平均生存周期是2.5天,而傳統的云虛擬機是23天。
容器編排對容器的生存周期有重要的影響,自動啟動和關閉容器導致了更高的重置率。使用了編排引擎的企業,一般的容器存活時間不會超過1天,而沒有使用編排引擎的企業,他們的容器平均存活時間為5.5天。
容器的短存活期和高密度意味著需要更好的基礎設施監控。監控方案必須是基于主機的,而不是基于角色的。Docker將促使監控方式不斷地發生變化。