Docker,容器,虚拟机和红烧肉
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。
Docker是什么?容器又是什么?
Docker 直譯:碼頭工人。是在碼頭上搬運(yùn)貨物的工人
容器 英文:Container,如果再翻譯回來(lái)就有2個(gè)不同的釋義:集裝箱/容器。
如果按照這世界上大多數(shù)正常人的理解,大家會(huì)把 Docker(碼頭工人)和 Container (集裝箱)這一對(duì)事物放在一起,他們的關(guān)系一目了然:碼頭工人搬運(yùn)集裝箱。但是如果按照這世界上另外的一類(lèi)人(程序員)的理解,我們會(huì)這樣組合 ,Docker (代碼集裝箱搬運(yùn)工)和 Container (容器)。
Docker與容器是完全2個(gè)不同的東西,Docker是用來(lái)組裝/搬運(yùn)/拆包容器的工具。當(dāng)然也可以是人,我們?cè)瓉?lái)這些苦逼的程序員誰(shuí)沒(méi)干過(guò)zip/copy/paste/unzip的工作呢?其實(shí)Docker就是這樣一個(gè)工具,用來(lái)打包 (build)/傳送(push/pull)/拆包 (run) 那些需要運(yùn)行的應(yīng)用。而容器就是那個(gè)包。
那么容器又是什么?
其實(shí)和集裝箱很類(lèi)似,就是把那些需要放在一起從A地運(yùn)送到B地運(yùn)行的,不能和其他程序混雜的代碼封裝成的一個(gè)包而已。這個(gè)概念從計(jì)算機(jī)出現(xiàn)的那天基本上就存在了,只是這么多年我們一直在不停的改進(jìn),但從來(lái)沒(méi)有一個(gè)像docker這樣的工具讓容器的使用變的如此簡(jiǎn)單。在Unix/Linux的世界里,它曾將叫做 Process Container,現(xiàn)在被稱(chēng)為Control Group (cGroup);在Windows世界里,我們?cè)?jīng)有組件。他們的目的都一樣,為了把程序從A地運(yùn)送到B地,同時(shí)確保他們可以相互隔離的運(yùn)行。
Docker絕對(duì)不等同于容器。一個(gè)是干活的人,一個(gè)是被搬運(yùn)的物品,能一樣嗎?但是我仍然在各種技術(shù)文章,會(huì)議演講上看到和聽(tīng)到將他們混為一談的說(shuō)法。實(shí)在覺(jué)得需要給他們正名,也是今天寫(xiě)這個(gè)文章的主要原因。
Docker,容器與虛擬機(jī)有啥區(qū)別?
在每一篇介紹Docker的文章里面都會(huì)看到與虛擬機(jī)比較的內(nèi)容,其實(shí)我覺(jué)得這完全是拿蘋(píng)果和香蕉比較,它們完全不具備可比性,至少在技術(shù)上!
大家為啥要這樣比較,主要目的是讓那些不了解IT但是卻在管理IT的人(對(duì),就是你的領(lǐng)導(dǎo)和你的客戶(hù))理解為啥他們好不容易,花了n多錢(qián)建立起了虛擬化平臺(tái)/私有云,現(xiàn)在還要再花錢(qián)搞容器,搞docker。對(duì)的,這純粹是個(gè)市場(chǎng)行為,與技術(shù)無(wú)關(guān),因?yàn)樗麄冊(cè)诩夹g(shù)上不具備可比性。
慣常的說(shuō)法,容器啟動(dòng)迅速(對(duì),它只需要加載那些當(dāng)前應(yīng)用的進(jìn)程)虛擬機(jī)啟動(dòng)緩慢(廢話,它要加載一堆和應(yīng)用無(wú)關(guān)的進(jìn)程好嗎)。你試試把100個(gè)應(yīng)用打包到一個(gè)容器里面然后啟動(dòng)它,估計(jì)你一定會(huì)被98%的Windows用戶(hù)打敗。
給你一個(gè)hyper-v, vmware, kvm你跑不了容器,你還是需要在上面啟動(dòng)虛擬機(jī),然后才能運(yùn)行容器。就好像你要在家里提供100個(gè)品類(lèi)的菜單,然后讓你兒子每天回來(lái)點(diǎn)餐,給他個(gè)沙漏,然后說(shuō)你隨便點(diǎn),我保證在10分鐘內(nèi)上菜。你當(dāng)你是謝霆鋒呢?人家謝大廚后面有10個(gè)幫廚,10個(gè)采購(gòu),10個(gè)餐廳經(jīng)理,10個(gè)服務(wù)員,做的菜都是提前腌制的。你就算有三頭六臂也只能說(shuō):臣妾做不到啊!
所以,容器之所以快,是把每次都要啟動(dòng)操作系統(tǒng)的操作預(yù)先完成了,這樣只需要啟動(dòng)應(yīng)用本身而已。而且,容器不會(huì)比直接啟動(dòng)一個(gè)應(yīng)用快,甚至還會(huì)更慢一點(diǎn)。
然并卵,那我要這七十二變有何用?
牢騷發(fā)夠了,還是說(shuō)說(shuō)Docker到底有啥用?Docker這個(gè)搬運(yùn)工與其他搬運(yùn)工不同的是,他在組裝容器的時(shí)候會(huì)把應(yīng)用需要的其他配件都放在一個(gè)集裝箱里。這樣,集裝箱到貨以后,直接開(kāi)包就可以完成應(yīng)用組裝;不用再到其他地方七拼八湊的去找各種配件了。這就好比你想做紅燒肉,原來(lái)的應(yīng)用打包只給你打包了肉(應(yīng)用),別的什么八角,香葉,冰糖,生抽老抽(應(yīng)用依賴(lài)環(huán)境)都不帶;現(xiàn)在商家提供一站式服務(wù),一個(gè)包里不光有肉,還有七七八八所有的東西。你家里有爐子,有鍋就夠了(操作系統(tǒng))。
另外,Docker厲害的地方在于,它不光提供了這些配料,還把物流給你搞定了。我們現(xiàn)在可以直接向商家(Docker Hub)下單,商家送貨上門(mén)(Docker Pull),你準(zhǔn)備好爐子和鍋(操作系統(tǒng)),直接下鍋(Docker Run),菜就上桌嘍。
最后,用一句話定義Docker,那就是:優(yōu)化應(yīng)用運(yùn)維過(guò)程的工具和生態(tài)系統(tǒng)。
晚上吃紅燒肉!祝大家胃口好!
?
總結(jié)
以上是生活随笔為你收集整理的Docker,容器,虚拟机和红烧肉的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安装 sql server时变更检查解决
- 下一篇: oracle中使用sql查询时字段为空则