要了解的有關(guān)容器和虛擬機(jī)的一個事情是,一個運(yùn)用于應(yīng)用程序,另一個是為操作系統(tǒng)設(shè)計(jì)的。這就是為什么您經(jīng)常會看到一些企業(yè)應(yīng)用程序運(yùn)行在容器上而不是自己的虛擬機(jī)上。在虛擬機(jī)上使用容器有一些優(yōu)點(diǎn)。
要了解的有關(guān)容器和
虛擬機(jī)的一個事情是,一個運(yùn)用于應(yīng)用程序,另一個是為操作系統(tǒng)設(shè)計(jì)的。這就是為什么您經(jīng)常會看到一些企業(yè)應(yīng)用程序運(yùn)行在容器上而不是自己的虛擬機(jī)上。在虛擬機(jī)上使用容器有一些優(yōu)點(diǎn)。
容器較大的優(yōu)點(diǎn)之一是可以預(yù)留比虛擬機(jī)少的資源。請記住,容器本質(zhì)上是單個應(yīng)用程序,而虛擬機(jī)需要更多資源來運(yùn)行整個操作系統(tǒng)。
如果您需要運(yùn)行 MySQL,NGINX 或其他服務(wù),使用容器是非常有必要。但是,如果您需要在自己的服務(wù)器上運(yùn)行完整的 LAMP 堆棧,則運(yùn)行虛擬機(jī)更好。虛擬機(jī)有著更好的靈活性,可以供您選擇您的操作系統(tǒng),并在您認(rèn)為合適的情況下進(jìn)行升級。相比之下,運(yùn)行已配置應(yīng)用程序容器在主機(jī)的操作系統(tǒng)升級方面是隔離的。
用例場景
我最喜歡使用容器的原因之一就是使用 Linux 庫版本。例如,假設(shè)您需要 Python 的特定版本來開發(fā)應(yīng)用程序。然后,當(dāng)你在運(yùn)行應(yīng)用程序的盒子上更新時(shí),突然發(fā)現(xiàn) Python 版本發(fā)生了變化,導(dǎo)致應(yīng)用程序無法正常工作。
使用容器的另一個好處是你可以把一個應(yīng)用程序放到一個容器中,然后在任何支持你正在運(yùn)行的容器類型的操作系統(tǒng)上運(yùn)行它。當(dāng)你想要一個運(yùn)行在不同 Linux 發(fā)行版應(yīng)用程序時(shí)。通過使用容器,可以在各種不同的發(fā)行版上運(yùn)行類似的應(yīng)用程序環(huán)境。容器提供了可移植性。
容器對于快速的跨發(fā)行版部署是更可行的,而虛擬機(jī)對于像運(yùn)行 LAMP 堆棧這樣的單一應(yīng)用程序使用情況是更好的。
安全性
與容器相比,虛擬機(jī)提供了更多的安全性。這并不是說容器不能被保護(hù),而是說,默認(rèn)的虛擬機(jī)提供了更大的隔離。請記住,容器可以共享系統(tǒng)資源而虛擬機(jī)不行。
在運(yùn)行容器時(shí),可以采取一些措施來降低風(fēng)險(xiǎn),包括避免超級用戶權(quán)限,確保從可信來源獲取容器,并且保持狀態(tài)。有些容器是數(shù)字簽名的,這有助于確定您可以從可信來源獲取容器。
最后,你需要保持容器的單一功能職責(zé)。一旦你開始在一個容器下結(jié)合軟件職責(zé),你會發(fā)現(xiàn)還是使用虛擬機(jī)較好。重申一下,容器是用于單一用途的應(yīng)用程序,虛擬機(jī)用于多用途的應(yīng)用程序。堅(jiān)持這種做法,你將在安全性和整體功能方面處于更好的狀況。
選擇合適的工具
無論虛擬機(jī)或容器類型如何,選擇適合您需求的關(guān)鍵都在于研究每個選項(xiàng)的能力。在容器領(lǐng)域,Docker 提供了強(qiáng)大的企業(yè)解決方案。這就吸引了那些關(guān)注 Docker 容器的公司,因?yàn)楣局廊绻霈F(xiàn)任何問題,他們可以得到他們所需要的支持。Docker 是企業(yè)用戶友好的選擇,特別是在 Docker Swarms 中。而將 Docker Swarms 與 Kubernetes 相比,Kubernetes 在高級環(huán)境中的設(shè)置要復(fù)雜得多。
回到虛擬機(jī)方面,我一直發(fā)現(xiàn) Virtualbox 可以提供更好的面向桌面的虛擬機(jī)環(huán)境。而 VMware 在服務(wù)器方面做了各種各樣的產(chǎn)品,VMware 擁有從存儲到
云服務(wù)器解決方案的各種虛擬機(jī)解決方案,還有其他選擇(各種管理程序等)。但我認(rèn)為 VirtualBox 和 VMware 很好地代表了桌面到
服務(wù)器虛擬化的兩個領(lǐng)域。
贏家是?
在決定容器還是虛擬機(jī)之前,請考慮以下事項(xiàng)。如果你選擇容器,但你完全可以在虛擬機(jī)上運(yùn)行容器。了解這一點(diǎn)很重要,因?yàn)檫@里沒有明顯的贏家或輸家。事實(shí)上,這兩種技術(shù)的需求完全不同。
容器將引起媒體的持續(xù)關(guān)注,因?yàn)樗鼈冏層脩粲酶俚挠布咝У剡\(yùn)行。在另一方面,虛擬機(jī)仍然是服務(wù)器和云
空間的主要內(nèi)容。
小編認(rèn)為值得一看的是 Kubernetes 和 Docker Swar 之間的事情。我認(rèn)為看看這兩種容器管理技術(shù)是如何發(fā)揮作用的,以及哪種技術(shù)會成為標(biāo)準(zhǔn)。可能隨著時(shí)間的推移,我們將開始看到 Kubernetes 成為頭條新聞,并成為容器陣營的頭號人物。