×

什么是虛擬化?什么是Docker ?Docker容器與虛擬機(jī)區(qū)別

  • 作者:新網(wǎng)
  • 來(lái)源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-07 13:25:11

有過(guò)后臺(tái)開(kāi)發(fā)經(jīng)驗(yàn)的同學(xué),一定遇到過(guò)下面這些問(wèn)題:程序在開(kāi)發(fā)環(huán)境跑得好好的,但是部署到生產(chǎn)環(huán)境,卻狀況頻出;擔(dān)心客戶的環(huán)境上缺少某些必要的庫(kù)文件,或者某些文件的版本不符合要求。

  20140717175657_76340.jpg

  有過(guò)后臺(tái)開(kāi)發(fā)經(jīng)驗(yàn)的同學(xué),一定遇到過(guò)下面這些問(wèn)題:程序在開(kāi)發(fā)環(huán)境跑得好好的,但是部署到生產(chǎn)環(huán)境,卻狀況頻出;擔(dān)心客戶的環(huán)境上缺少某些必要的庫(kù)文件,或者某些文件的版本不符合要求。
  那么,有了docker,這些問(wèn)題都將不復(fù)存在。
  什么是Docker
  Docker是一個(gè)虛擬環(huán)境容器,可以將你的可執(zhí)行文件、配置文件及一切其他你需要的文件一并打包到這個(gè)容器中,并發(fā)布和應(yīng)用到任意平臺(tái)。比如,你在本地用Python開(kāi)發(fā)了一個(gè)網(wǎng)站后臺(tái),開(kāi)發(fā)測(cè)試完成后,就可以將Python3及其依賴包、Flask及其各種插件、Mysql、Nginx等打包到一個(gè)容器中,然后部署到任意你想部署到的環(huán)境。
  如果不好理解,我們?cè)倌眉b箱打個(gè)比方。
  集裝箱解決了什么問(wèn)題呢?在一艘大船上,可以把貨物規(guī)整的擺放起來(lái)。并且各種各樣的貨物被集裝箱標(biāo)準(zhǔn)化了,集裝箱和集裝箱之間不會(huì)互相影響。那么我就不需要專門運(yùn)送水果的船和專門運(yùn)送化學(xué)品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運(yùn)走。
  docker也是類似的理念。我們可以在一臺(tái)機(jī)器上跑多個(gè)互相毫無(wú)關(guān)聯(lián)的docker容器,每一個(gè)容器就相當(dāng)于一個(gè)集裝箱。
  Docker里的幾個(gè)基本概念
  鏡像:鏡像可以理解為一堆靜態(tài)的文件
  容器:容器則是鏡像run起來(lái)之后的一個(gè)實(shí)例。鏡像之于容器就好比面向?qū)ο缶幊汤锏腸lass之于object。
  倉(cāng)庫(kù):鏡像需要地方保存,這個(gè)地方就是倉(cāng)庫(kù)
  與傳統(tǒng)虛擬化的區(qū)別
  這里我們順便講一下傳統(tǒng)虛擬化。
  我們看到,傳統(tǒng)虛擬化是站在硬件物理資源的基礎(chǔ)上,虛擬出多個(gè)OS,然后在OS的基礎(chǔ)上構(gòu)建相對(duì)獨(dú)立的程序運(yùn)行環(huán)境,而Dokcer則是在OS的基礎(chǔ)上進(jìn)行虛擬,顯然Dokcer輕量得多,因此其資源占用、性能消耗相比傳統(tǒng)虛擬化都有很大優(yōu)勢(shì)。
  在IT行業(yè)從業(yè)多年,也算從看著時(shí)代從物理服務(wù)器走向虛擬化計(jì)算時(shí)代,又準(zhǔn)備進(jìn)入Docker時(shí)代,作為下一代虛擬化技術(shù),Docker正改變著整個(gè)行業(yè)開(kāi)發(fā)、測(cè)試、部署應(yīng)用的方式,至于虛擬化技術(shù)和docker技術(shù)到底有什么不同,下面來(lái)分析一下。
  01 什么是虛擬化?
  顧名思義,虛擬化技術(shù)是將物理資源以某種技術(shù)虛擬成資源池的形式,主要有一虛多和多虛一兩種形式,比如個(gè)人電腦安裝Vmware軟件,可以在這個(gè)軟件上安裝其他Win系統(tǒng)、MacOS、Linux系統(tǒng)等,實(shí)現(xiàn)一臺(tái)電腦/筆記本承載多個(gè)系統(tǒng)的優(yōu)點(diǎn),目前蘋果筆記本用戶雙系統(tǒng)解決方案也以虛擬機(jī)為主,普通Windows用戶可能需求量不大,而技術(shù)人員基本是必備軟件了。
  從企業(yè)層面來(lái)看,多虛一為主要形式,也就是將大量物理服務(wù)器集群虛擬化,形成一個(gè)資源池,在這個(gè)資源上創(chuàng)建各種不同的虛擬機(jī),實(shí)現(xiàn)靈活部署。
  02 什么是Docker
  其實(shí)docker和虛擬技術(shù)很像,但又有一些不同點(diǎn),一方面是兩個(gè)技術(shù)的層級(jí)上,虛擬機(jī)一般是底層硬件Hardware支撐,上層是虛擬管理系統(tǒng)Hypervisor層,在上層開(kāi)啟不同的VM業(yè)務(wù),如果需要將這些業(yè)務(wù)進(jìn)行隔離,需要每個(gè)VM啟動(dòng)客戶機(jī)操作系統(tǒng),非常消耗資源。
  Docker完全不同,底層有硬件和Host OS系統(tǒng)支撐,比如Windows/MacOS/Linux,中間拋去了臃腫的系統(tǒng),而是以Docker守護(hù)進(jìn)程代替,上層建立不同的容器,不同的應(yīng)用鏡像打包在不同的容器中,他們互相隔離。
  03 虛擬化與docker的區(qū)別
  docker設(shè)計(jì)小巧,部署遷移快速,運(yùn)行高效,應(yīng)用之間相互獨(dú)立,管理人員可以看到所有容器的內(nèi)容,虛擬化技術(shù)比較臃腫,不論什么應(yīng)用都需要先創(chuàng)建新的系統(tǒng),并且并非按照應(yīng)用隔離,而是按照系統(tǒng)隔離,管理員無(wú)法看到系統(tǒng)內(nèi)部信息。
  舉個(gè)例子,Docker就是手機(jī)中的各種APP,只需要一個(gè)系統(tǒng)就可以下載自己所需的應(yīng)用,但是虛擬化技術(shù)相當(dāng)于你的蘋果手機(jī)安裝一個(gè)龐大軟件,這個(gè)軟件上安裝安卓系統(tǒng)、魅族系統(tǒng)等,每個(gè)系統(tǒng)上還要安裝各類應(yīng)用,比較麻煩。
  但兩者沒(méi)有絕對(duì)的好壞,主要還是看應(yīng)用場(chǎng)景,根據(jù)不同的需求選擇不同的解決方案即可。
 

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading