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