是什么讓Docker容器如此受歡迎?在某些情況下甚至比虛擬機更有魅力?
答案就是密度。
為什么這么說?它怎會如此重要?
在計算的背景下,密度指的是單個物理服務器一次可以運行的對象數量。如果服務器可以通過充分利用其資源一次容納大量應用程序,它則可以支持密集的環境部署。相反,如果服務器只運行少數應用程序,它的總容量未能充分利用,那么它是一個稀疏的環境。
Docker和密度
支持密集軟件部署的能力是Docker在許多情況下比部署應用程序的虛擬機更有利的一個關鍵原因。
關于這點,你必須首先意識到,從根本上講虛擬機不善于密集,這里有2個主要原因:
虛擬機有更多的開銷。他們必須運行一個完整的客戶操作系統,即使他們只托管單個應用程序。因此,更多的物理服務器資源必須專用于支持與客戶操作系統相關的環境開銷,從而減少可用于專用于應用程序的資源。
配置虛擬機時,通常必須為其分配一定量的存儲,內存和計算資源。這些資源將永久連接到虛擬機,直到您更改配置。即使虛擬機不使用資源,也不支持主機上的其他虛擬機。
相比之下,Docker容器是創建密集環境的理想選擇,在這種環境中,主機服務器的資源被充分利用,但不會被過度使用。這是因為Docker容器不需要通過在容器內創建客戶機操作系統來復制主機操作系統的功能。
此外,Docker不會強制您為容器分配給定數量的資源(雖然您可以為單個容器設置資源配額)。這意味著Docker容器能夠更高效和動態地使用來自主機的資源。當放置在一個容器或服務上的需求減少時,它所消耗的資源將被釋放以供其他服務使用。
它可以幫助Docker容器輕松跨服務器集群進行分布。有助于確保資源被有效地使用以及每個服務器密度的最大化,同時使單個服務器變得過載的風險最小化。
結論
到目前為止,密度已經不是Docker會話的重要組成部分(雖然Canonical喜歡使用該術語來推廣其系統容器解決方案,LXD是專為托管完整的操作系統而不是個別應用程序而設計的)。但是這個概念有助于思考為什么Docker已經變得如此受歡迎 - 以及Docker和虛擬機之間的關鍵區別。