趣說“容器技術(shù)”,女朋友讓我白話它的精彩故事!

面對(duì)一不小心就放大大大招的女朋友,我也只能每天戰(zhàn)戰(zhàn)兢兢、如履薄冰,表面逢迎,心里卻諸多的不快。Anyway,當(dāng)女朋友拋過來新的“難題”時(shí),我也只能見招拆招、見題解題,畢竟方法總比困難多。
這不,在經(jīng)歷《為了搞懂“云原生”,女朋友竟敢讓我懸梁刺股?!》之后,女朋友仍舊在糾結(jié)“容器化與虛擬機(jī)的區(qū)別”。無奈,為了女朋友心中能夠更暢快一些,我還是以“趣味”的方式,來說一說“容器技術(shù)”的故事。
docker的誕生與進(jìn)化
大概在2010年,數(shù)名朝氣蓬勃、意氣風(fēng)發(fā)的IT男,想要在云計(jì)算領(lǐng)域指點(diǎn)江山激昂文字,于是在美國舊金山成立了dotCloud公司,這家公司主要做LXC,這就是Linux container,emmm,翻譯過來就是Linux容器虛擬技術(shù),隸屬于基于PaaS層的云計(jì)算技術(shù)。
Wait,dotCloud降生之后,一直默默耕耘,將自己的容器技術(shù)進(jìn)行簡(jiǎn)化和標(biāo)準(zhǔn)化,并把它叫做“Docker”。與此同時(shí),還一直念叨:我怎么還不出名,我怎么還不紅,我怎么沒引起關(guān)注。人紅是非多,可我就想是非多一些。就這樣,日復(fù)一日、年復(fù)一年,默默無聞的dotCloud終于過不下去了!!!

新事物的誕生必將經(jīng)歷“升級(jí)打怪”的過程,dotCloud公司窮得揭不開鍋的時(shí)候,dotCloud公司的創(chuàng)始人之一、Docker之父Solomon Hykes決定Open Source,揮淚跟戰(zhàn)友說:我們開源吧,只有開源才能讓我們的孩子——Docker活下去。
這里插一句嘴,開源就是開放源代碼,將保密的程序代碼開放給所有人,大家一起參與,共享源代碼和意見。
結(jié)果,不開則已,一開驚人,越來越多的IT攻城獅發(fā)現(xiàn)Docker的魅力,接踵而至,紛紛加入Docker開源社區(qū)。一時(shí)間,人氣暴漲,版本迭代加快,此時(shí)的Docker不可一世,是戲曲界的當(dāng)紅花旦,更是業(yè)內(nèi)公認(rèn)的一哥!
不僅如此,Google、微軟、Amazon、VMware對(duì)Docker鼎力支持,還專門開發(fā)構(gòu)建一種開源容器管理系統(tǒng),即后來的K8s?;鹆艘院?,dotCloud在想,公司的名稱還沒Docker出名,干脆把公司名字改成Docker Inc.。
來呀,找茬呀?容器技術(shù)與虛擬機(jī)的區(qū)別
最難的部分到了,到底什么是容器技術(shù)呢?
有效地將單個(gè)操作系統(tǒng)的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有沖突的資源使用需求,這種技術(shù)就是容器技術(shù)。
顧名思義,容器是一個(gè)相對(duì)獨(dú)立的運(yùn)行環(huán)境,有點(diǎn)類似虛擬機(jī),但不像虛擬機(jī)那樣徹底,容器并沒有把宿主機(jī)上的資源全部消耗。容器和虛擬機(jī)最主要的區(qū)別,便是虛擬化層的位置和操作系統(tǒng)資源的使用方式。


其實(shí),在容器技術(shù)之前,業(yè)界公認(rèn)的當(dāng)紅花旦便是虛擬機(jī),其典型的品牌代表是VMware和OpenStack兩家公司。
虛擬機(jī)是在操作系統(tǒng)里面,裝一款軟件,通過這個(gè)軟件虛擬出“子電腦”出來。在這個(gè)“子電腦”里,我們可以運(yùn)行微信、QQ以及其他程序。同樣,我們也可以模擬出更多“子電腦”,這些子電腦就是虛擬機(jī)了,虛擬之間相互隔離,互不影響。
But,容器技術(shù)本質(zhì)上跟虛擬技術(shù)有一定的區(qū)別,虛擬機(jī)使用虛擬機(jī)管理程序(hypervisor)運(yùn)行在物理設(shè)備上,從系統(tǒng)可計(jì)算資源分配虛擬機(jī)實(shí)例。換言之,虛擬機(jī)需要虛擬一個(gè)物理環(huán)境,緊接著構(gòu)建一個(gè)完整的操作系統(tǒng),供應(yīng)用程序運(yùn)行。
對(duì)于容器技術(shù)而言,直接將容器層安裝在主機(jī)操作系統(tǒng)上,直接利用了宿主機(jī)的內(nèi)核,它不需要虛擬整個(gè)操作系統(tǒng),抽象層比虛擬機(jī)更少,啟動(dòng)時(shí)間更短、占用空間更小。
對(duì),幾秒鐘就能啟動(dòng)!
對(duì),占空間僅需MB級(jí)!
這就是容器技術(shù)!
雙建客——深藏功與名的Docker
實(shí)際上,Docker本身并不是容器,而是創(chuàng)建容器的工具,是應(yīng)用容器引擎。不過要想徹底弄懂Docker,我們先看Docker的雙建客:“Build, Ship and Run”、“Build once,Run anywhere”
首先,“Build, Ship and Run”是“搭建、發(fā)送、運(yùn)行”。
為了搞懂它,我先來舉個(gè)栗子。

有一天,我獨(dú)自來到孤島上,我要在這里開啟新的生活,于是我伐木、搬石頭,辛苦過后,蓋了一座并不完美房子。
住了一段時(shí)間之后,我想搬家了,傳統(tǒng)意義的搬家是搬運(yùn)除了房子以外的物件,比如床單被褥、日用電器等。
按照傳統(tǒng)的想法,我到一個(gè)新地方,重新靠自己的雙手、勤勞建筑屬于自己的小巢。但這次,我徹底懶惰了,有沒有一種魔法可以將我蓋的房子重新復(fù)制一份,我直接可以拎包入住。
Docker告訴我,可以。它直接將我建好的房子做成“鏡像”,我直接拎包入住。
這就是Docker的另一個(gè)雙建客——“Build once,Run anywhere(搭建一次,到處能用)”。
擁有雙建客的Docker如魚得水、如虎添翼,簡(jiǎn)直輕量許多,方便許多。
直到有一天,人們發(fā)現(xiàn)要想將Docker用于具體業(yè)務(wù)上,其實(shí)并不容易,這就需要編排、管理、調(diào)度等各個(gè)方面的配合。在這個(gè)背景下,人們迫切需要一套管理系統(tǒng),對(duì)Docker和容器進(jìn)行高級(jí)的、靈活的管理。
這個(gè)時(shí)候,基于容器的集群管理平臺(tái)——K8s(Kubernetes)出現(xiàn)了!
K8s的締造,Google的不世之功!
早在十多年前,谷歌開始嘗試容器,構(gòu)建了一種集群管理系統(tǒng)——Borg,這是K8s的前身。這個(gè)集群管理系統(tǒng)可以運(yùn)行成千上萬個(gè)任務(wù),大大提高了計(jì)算效率。在這個(gè)系統(tǒng)如火如荼發(fā)展的同時(shí),谷歌認(rèn)為運(yùn)行虛擬機(jī)造成處理器利用率機(jī)器低下,于是將注意力放在容器系統(tǒng)Docker上,決定構(gòu)建一種開源容器管理系統(tǒng)。?

這個(gè)開源容器管理系統(tǒng)就是后來的Kubernetes,意思是舵手或領(lǐng)航員,簡(jiǎn)稱K8s。
2014年Google宣布K8s開源;
2014年7月,微軟、Red Hat、IBM、Docker、CoreOS、Mesosphere、Saltstack等公司,相繼加入K8s。
這不,這就是“容器技術(shù)”!
女朋友:呵呵。