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

新事物的誕生必將經(jīng)歷“升級打怪”的過程,dotCloud公司窮得揭不開鍋的時候,dotCloud公司的創(chuàng)始人之一、Docker之父Solomon Hykes決定Open Source,揮淚跟戰(zhàn)友說:我們開源吧,只有開源才能讓我們的孩子——Docker活下去。
這里插一句嘴,開源就是開放源代碼,將保密的程序代碼開放給所有人,大家一起參與,共享源代碼和意見。
結(jié)果,不開則已,一開驚人,越來越多的IT攻城獅發(fā)現(xiàn)Docker的魅力,接踵而至,紛紛加入Docker開源社區(qū)。一時間,人氣暴漲,版本迭代加快,此時的Docker不可一世,是戲曲界的當紅花旦,更是業(yè)內(nèi)公認的一哥!
不僅如此,Google、微軟、Amazon、VMware對Docker鼎力支持,還專門開發(fā)構(gòu)建一種開源容器管理系統(tǒng),即后來的K8s。火了以后,dotCloud在想,公司的名稱還沒Docker出名,干脆把公司名字改成Docker Inc.。
來呀,找茬呀?容器技術與虛擬機的區(qū)別
最難的部分到了,到底什么是容器技術呢?
有效地將單個操作系統(tǒng)的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有沖突的資源使用需求,這種技術就是容器技術。
顧名思義,容器是一個相對獨立的運行環(huán)境,有點類似虛擬機,但不像虛擬機那樣徹底,容器并沒有把宿主機上的資源全部消耗。容器和虛擬機最主要的區(qū)別,便是虛擬化層的位置和操作系統(tǒng)資源的使用方式。
其實,在容器技術之前,業(yè)界公認的當紅花旦便是虛擬機,其典型的品牌代表是VMware和OpenStack兩家公司。
虛擬機是在操作系統(tǒng)里面,裝一款軟件,通過這個軟件虛擬出“子電腦”出來。在這個“子電腦”里,我們可以運行微信、QQ以及其他程序。同樣,我們也可以模擬出更多“子電腦”,這些子電腦就是虛擬機了,虛擬之間相互隔離,互不影響。
But,容器技術本質(zhì)上跟虛擬技術有一定的區(qū)別,虛擬機使用虛擬機管理程序(hypervisor)運行在物理設備上,從系統(tǒng)可計算資源分配虛擬機實例。換言之,虛擬機需要虛擬一個物理環(huán)境,緊接著構(gòu)建一個完整的操作系統(tǒng),供應用程序運行。
對于容器技術而言,直接將容器層安裝在主機操作系統(tǒng)上,直接利用了宿主機的內(nèi)核,它不需要虛擬整個操作系統(tǒng),抽象層比虛擬機更少,啟動時間更短、占用空間更小。
對,幾秒鐘就能啟動!
對,占空間僅需MB級!
這就是容器技術!
雙建客——深藏功與名的Docker
實際上,Docker本身并不是容器,而是創(chuàng)建容器的工具,是應用容器引擎。不過要想徹底弄懂Docker,我們先看Docker的雙建客:“Build, Ship and Run”、“Build once,Run anywhere”
首先,“Build, Ship and Run”是“搭建、發(fā)送、運行”。
為了搞懂它,我先來舉個栗子。
有一天,我獨自來到孤島上,我要在這里開啟新的生活,于是我伐木、搬石頭,辛苦過后,蓋了一座并不完美房子。
住了一段時間之后,我想搬家了,傳統(tǒng)意義的搬家是搬運除了房子以外的物件,比如床單被褥、日用電器等。
按照傳統(tǒng)的想法,我到一個新地方,重新靠自己的雙手、勤勞建筑屬于自己的小巢。但這次,我徹底懶惰了,有沒有一種魔法可以將我蓋的房子重新復制一份,我直接可以拎包入住。
Docker告訴我,可以。它直接將我建好的房子做成“鏡像”,我直接拎包入住。
這就是Docker的另一個雙建客——“Build once,Run anywhere(搭建一次,到處能用)”。
擁有雙建客的Docker如魚得水、如虎添翼,簡直輕量許多,方便許多。
直到有一天,人們發(fā)現(xiàn)要想將Docker用于具體業(yè)務上,其實并不容易,這就需要編排、管理、調(diào)度等各個方面的配合。在這個背景下,人們迫切需要一套管理系統(tǒng),對Docker和容器進行高級的、靈活的管理。
這個時候,基于容器的集群管理平臺——K8s(Kubernetes)出現(xiàn)了!
K8s的締造,Google的不世之功!
早在十多年前,谷歌開始嘗試容器,構(gòu)建了一種集群管理系統(tǒng)——Borg,這是K8s的前身。這個集群管理系統(tǒng)可以運行成千上萬個任務,大大提高了計算效率。在這個系統(tǒng)如火如荼發(fā)展的同時,谷歌認為運行虛擬機造成處理器利用率機器低下,于是將注意力放在容器系統(tǒng)Docker上,決定構(gòu)建一種開源容器管理系統(tǒng)。

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