一篇容器的前世今生說的清楚的文章
容器的前世今生
物理機(jī)
- 部署非常慢
- 購(gòu)買服務(wù)器服務(wù),放在IDC機(jī)房,各種走流程,很多流程不可控制流程慢。
- 成本非常高
- 物理的服務(wù)器,高額的配置成本貴。
- 資源浪費(fèi)
- 資源太多了,針對(duì)app的服務(wù)可能利用率不夠充分。
- 難于遷移和擴(kuò)展
- 遷移app端的服務(wù)器,我們要提前準(zhǔn)備好一個(gè)新的物理服務(wù)器,環(huán)境需要重新的遷移。資源消耗比較大的話,用戶增加比較快需要擴(kuò)展內(nèi)存,cpu,硬盤麻煩,可能最后還是選擇購(gòu)買新的物理服務(wù)器。
- 可能會(huì)被限定硬件廠家
- 那些已經(jīng)采用RISC架構(gòu)或非x86平臺(tái)的用戶來說,要想體驗(yàn)到x86平臺(tái)的高效、便捷就要進(jìn)行系統(tǒng)遷移。但是對(duì)于絕大多數(shù)應(yīng)用來說,遷移可不是一件容易的事兒,甚至有些人更是“談虎色變”。任何解釋性和編譯性語言都存在代碼的風(fēng)險(xiǎn)。
- 真實(shí)的服務(wù)器
虛擬機(jī)
物理資源的限定和調(diào)度,設(shè)置指定VM的內(nèi)存,cpu,硬盤根據(jù)應(yīng)用來進(jìn)行控制,方便擴(kuò)展,歡迎可以統(tǒng)一化,方便管理。可以使物理資源的最大化利用。
- 一個(gè)物理機(jī)部署多個(gè)服務(wù)
- 在軟件中模擬各種操作系統(tǒng),可以同時(shí)運(yùn)行多個(gè)相同或者不同的操作系統(tǒng)方便,可掛起(暫停),可作快照,可作克隆,在運(yùn)行的時(shí)候占用內(nèi)存。
- 每個(gè)app在獨(dú)立的VM里
- 每個(gè)app都在一臺(tái)VM里面,互相不干擾不影響。
- 資源池
- 一個(gè)物理機(jī)的資源分配到了不同的虛擬機(jī)里
- 很容易擴(kuò)展
- 加物理機(jī)器 || 加虛擬機(jī)
- 很容易云化
- 亞馬遜AWS,阿里云,騰訊云,華為云等
- 虛擬機(jī)的機(jī)構(gòu)

虛擬機(jī)的局限性
每個(gè)虛擬機(jī)就是一個(gè)操作系統(tǒng),每個(gè)操作系統(tǒng)都要分配對(duì)應(yīng)的操作系統(tǒng)資源,大家都用window系統(tǒng),真正的生產(chǎn)環(huán)境一般都是用linux操作系統(tǒng)其中一部分原因就是因?yàn)閘inux系統(tǒng)消耗資源比較少。如果在一個(gè)物理服務(wù)器上放入10個(gè)虛擬機(jī),每個(gè)虛擬機(jī)系統(tǒng)占用1g資源,等于浪費(fèi)了10g的內(nèi)存資源。所以當(dāng)操作系統(tǒng)越來越多的時(shí)候消耗在系統(tǒng)上的資源也就越來越大。
開發(fā)和運(yùn)維面臨的問題
上邊是開發(fā)人員,下面是運(yùn)維。
開發(fā)人員選擇了不同語言和環(huán)境來進(jìn)行開發(fā),運(yùn)維人員為了使應(yīng)用正常的跑起來需要配置盡量和開發(fā)人員開發(fā)一樣的環(huán)境來滿足應(yīng)用的正常使用。

開發(fā)人員/運(yùn)維人員
容器解決了什么問題
docker進(jìn)行了容器的打包,打包好的容器,可以運(yùn)行在任何的環(huán)境,解決了開發(fā)和運(yùn)維直接的矛盾。開發(fā)和運(yùn)維之間建立了橋梁,這也是時(shí)間devops拿手的解決方案。

容器解決了什么

什么是容器
對(duì)軟件和其依賴的標(biāo)準(zhǔn)化打包
應(yīng)用之間相互隔離(肯定沒有虛擬機(jī)和物理機(jī)隔離的那么完全)
共享同一個(gè)OS Kernel(同一個(gè)操作系統(tǒng)上)
可以運(yùn)行在很多主流的操作系統(tǒng)上(unix,linux,windows等)

容器里面可以放入什么?
虛擬機(jī)和容器的區(qū)別

虛擬機(jī)是物理資源層面的隔離,容器是應(yīng)用層面的隔離
虛擬化和容器的結(jié)合
在國(guó)內(nèi)很多場(chǎng)景都是虛擬化和容器結(jié)合來使用的,將物理機(jī)進(jìn)行虛擬化出來多個(gè)VM,在VM內(nèi)部在使用容器化。

3個(gè)虛擬機(jī),其中一個(gè)虛擬機(jī)里面跑這3個(gè)Docker