Docker學(xué)習(xí)筆記(一) 簡(jiǎn)介
寫在前面
學(xué)習(xí)Docker已經(jīng)有大半年了跋核,前段時(shí)間一直因?yàn)楣ぷ髅Φ貌豢砷_交辫樱,清閑下來(lái)之后還是決定繼續(xù)擼博客摊滔,記錄下自己學(xué)習(xí)的過(guò)程苔巨,同時(shí)也給猿友們一些參考,寫得不對(duì)的地方喘垂,也請(qǐng)大家指出來(lái)甜刻。
??接下來(lái)我要開始我的表演了~
概述
隨著云計(jì)算的發(fā)展,容器技術(shù)變得越來(lái)越火正勒,其中最出眾的當(dāng)屬Docker得院。Docker也可以叫做輕量化虛擬技術(shù),但它并不是虛擬機(jī)章贞。相比傳統(tǒng)的VM祥绞,它可以做到秒級(jí)啟動(dòng),占用資源更少鸭限,一臺(tái)服務(wù)器可以啟動(dòng)成千上萬(wàn)的容器蜕径。
??Docker以容器為資源分割和調(diào)度的基本單位,基于LXC技術(shù)對(duì)進(jìn)程進(jìn)行隔離败京,這一個(gè)個(gè)進(jìn)程就是Docker容器兜喻。可以在安裝了Docker的linux服務(wù)器上輸入命令pstree赡麦,如下圖所示朴皆,即可看到OS的進(jìn)程樹帕识,其中就有Docker容器的進(jìn)程樹。
??Docker的每一個(gè)容器都封裝了應(yīng)用程序的代碼遂铡,運(yùn)行時(shí)的環(huán)境肮疗,依賴,配置文件等扒接,與VM不同伪货,容器不會(huì)捆綁一個(gè)完整的操作系統(tǒng)。所以Docker可以跨平臺(tái)珠增,發(fā)布和運(yùn)行分布式應(yīng)用超歌,不受操作系統(tǒng)的限制砍艾,只要機(jī)器裝了Docker蒂教,就可以愉快的pull需要的鏡像,然后運(yùn)行容器啦~這對(duì)于運(yùn)維人員來(lái)說(shuō)脆荷,就會(huì)大大降低他們的工作量凝垛,他們不用管這個(gè)容器里面需要運(yùn)行的是Java,Node還是Python蜓谋,所有的操作都被統(tǒng)一成了docker pull ...梦皮,docker run...。這就解決了程序員嘴里常說(shuō)的一個(gè)問(wèn)題:這東西明明在我機(jī)器上都能運(yùn)行桃焕,怎么在你那里就不行了剑肯。
?? Docker改變了整個(gè)軟件開發(fā)和部署的流程,按照我們傳統(tǒng)的方式观堂。以Java為例让网,我們要在服務(wù)器上運(yùn)行一個(gè)Java應(yīng)用,這時(shí)候我們需要先安裝JDK师痕,JDK安裝好了溃睹,開始擼代碼,這時(shí)候需要maven來(lái)做項(xiàng)目依賴管理和打包胰坟,又得安裝maven因篇,這些完成之后,發(fā)現(xiàn)還需要一個(gè)servlet容器來(lái)運(yùn)行我們的項(xiàng)目笔横,這時(shí)候又要搞一個(gè)tomcat或者jetty竞滓。這時(shí)候有的朋友會(huì)說(shuō):我就是學(xué)java的,這些環(huán)境配置根本難不倒我吹缔。沒(méi)錯(cuò)商佑,這些環(huán)境配置確實(shí)很基礎(chǔ),但是到了后面業(yè)務(wù)量劇增的時(shí)候涛菠,我們又要加服務(wù)器莉御,這時(shí)候又得重復(fù)相同的環(huán)境配置工作撇吞。有了Docker,我們可以把這些組件打包成一個(gè)個(gè)鏡像礁叔,推送到自建的私庫(kù)牍颈,每次只需要從私庫(kù)中拉下鏡像,運(yùn)行容器琅关,搞定~是不是更加輕松加愉快呢煮岁。開發(fā)人員還可以通過(guò)CI工具比如jenkins來(lái)實(shí)現(xiàn)自動(dòng)化部署發(fā)布,而操作的對(duì)象都是一個(gè)個(gè)的Docker容器涣易。
總結(jié)
??Docker官方logo的寓意非常明確画机,Docker容器就像一個(gè)個(gè)的集裝箱,不用管里面裝的是什么新症,只要裝好了步氏,放上船,就可以到任何地方使用徒爹。
?? Docker使用簡(jiǎn)單荚醒,不用費(fèi)很大力氣就能入門,多多練習(xí)就能非常熟練隆嗅。但是Docker相關(guān)知識(shí)較多界阁,也需要多花些時(shí)間才能學(xué)到精髓。