docker化你的java應(yīng)用(上)

前言

在各種技術(shù)大會(huì)(互聯(lián)網(wǎng)架構(gòu)姓迅,云計(jì)算等等)般甲,哪都少不了docker的身影肋乍。docker為啥這么火?因?yàn)樗鉀Q了大部分企業(yè)的痛點(diǎn):快速的持續(xù)集成敷存,服務(wù)的彈性伸縮墓造,部署簡(jiǎn)單,方便了運(yùn)維,而且為企業(yè)節(jié)省了機(jī)器資源滔岳,降低了成本「苡椋現(xiàn)在在很多企業(yè)(騰訊/京東/阿里/小紅書等等)都大規(guī)模使用docker。作為開(kāi)發(fā)工程師谱煤,咱們或多或少需要接觸docker摊求,因?yàn)樵蹅兊某绦蜻\(yùn)行在docker容器當(dāng)中,了解docker刘离,有益無(wú)害室叉。下面我們就進(jìn)入docker的世界吧~

走進(jìn)docker

docker是什么?

docker logo

docker的官網(wǎng)是:https://www.docker.com/硫惕,上圖是docker的logo:一條鯨魚馱著一些集裝箱在大海中遨游<牒邸(這個(gè)logo非常有意思,蘊(yùn)含了docker的核心思想恼除,稍后分析)

docker官網(wǎng)對(duì)docker的一句話定義是:

“Docker is the world’s leading software containerization platform.”

(docker是全球領(lǐng)先的軟件容器化平臺(tái))

大白話就是:docker是一個(gè)用來(lái)裝應(yīng)用的容器踪旷,就像杯子可以裝水,書包可以放書豁辉,筆筒可以放筆....你可以把任何你想得到的程序放到docker中令野!

docker是跨平臺(tái)的,支持linux/macos/windows徽级,不過(guò)docker是在ubuntu系統(tǒng)上開(kāi)發(fā)的气破,對(duì)于ubuntu支持最好。

理解docker logo

docker logo里面是一條鯨魚馱著一些集裝箱在海中遨游餐抢。

想一下现使,如果沒(méi)有集裝箱,那么貨物是零散的存放旷痕,運(yùn)輸過(guò)程中說(shuō)不定出現(xiàn)破損或者丟失碳锈,如果采用集裝箱,因?yàn)槭敲荛]的苦蒿,標(biāo)準(zhǔn)的殴胧,貨物運(yùn)輸會(huì)很安全。

鯨魚佩迟,游到碼頭拿貨(取集裝箱)团滥,然后出發(fā),運(yùn)輸集裝箱到目的地报强。這種存儲(chǔ)貨物/運(yùn)輸貨物的方式很標(biāo)準(zhǔn)灸姊,保證從一個(gè)地方到另一個(gè)地方,不會(huì)出現(xiàn)問(wèn)題秉溉。

以前力惯,A機(jī)器上運(yùn)行的程序想部署一套到其他機(jī)器上去碗誉,如果采取傳統(tǒng)到方式進(jìn)行文件拷貝等,有可能出現(xiàn)問(wèn)題父晶,采用集裝箱的方式進(jìn)行運(yùn)輸就可以避免哮缺。

既然,集裝箱是標(biāo)準(zhǔn)的甲喝,就是說(shuō)它的操作也是標(biāo)準(zhǔn)的尝苇,比如打開(kāi),關(guān)閉埠胖。這就意味著我們對(duì)應(yīng)用的啟動(dòng)糠溜、停止等將是統(tǒng)一的命令。(不論是nginx,tomcat等等直撤,它們的啟動(dòng)非竿,停止都將是統(tǒng)一的命令!這里說(shuō)的就是docker的api接口的標(biāo)準(zhǔn)化)

集裝箱和集裝箱之間有隔離性谋竖,就好像虛擬機(jī)似的红柱。我們知道虛擬機(jī)可以有自己的內(nèi)存/CPU/硬盤/網(wǎng)卡等,docker差不多圈盔,不過(guò)docker的容器更佳輕量級(jí)豹芯,它的創(chuàng)建、銷毀非城茫快】硐校【docker的隔離性最底層還是依賴linux的lxc(Linux Container容器是一種內(nèi)核虛擬化技術(shù))機(jī)制來(lái)實(shí)現(xiàn)的】

docker思想

docker的思想解決了哪些問(wèn)題众眨?

“程序在我這里運(yùn)行好好的,咋在你那里就不行了呢容诬?”

一個(gè)普通的java web程序跑起來(lái)娩梨,需要哪些依賴?

操作系統(tǒng)os/jdk/webserver/代碼/配置文件/...

比如览徒,程序中調(diào)用了系統(tǒng)命令狈定,現(xiàn)在os變了;

比如习蓬,jdk版本纽什,編譯使用的是1.8版本,機(jī)器上安裝的是jdk1.6躲叼,無(wú)法識(shí)別class版本芦缰;

比如,tomcat版本枫慷,有些舊版本的配置新版本不支持让蕾;...

針對(duì)這種問(wèn)題浪规,docker的處理方式是,把os/jdk/webserver/代碼等等一個(gè)個(gè)的放到集裝箱中去探孝,打包放到鯨魚上笋婿,由鯨魚給我們送到目的地去,也就是說(shuō)docker解決了運(yùn)行環(huán)境不一致帶來(lái)的問(wèn)題顿颅!

“哪個(gè)大哥又寫死循環(huán)了萌抵,系統(tǒng)又變慢了...”

傳統(tǒng)的方式中元镀,我們一臺(tái)機(jī)器上部署了很多服務(wù),很可能由于其他服務(wù)出現(xiàn)死循環(huán)占領(lǐng)cpu栖疑,日志狂打磁盤爆滿等情況導(dǎo)致我們自己的服務(wù)出現(xiàn)異常。

而docker的隔離性可以完全避免這樣的問(wèn)題遇革,因?yàn)閐ocker在啟動(dòng)的時(shí)候,就給限定了最大能使用的cpu萝快,內(nèi)存,硬盤揪漩,如果超出就kill掉。

“雙十一來(lái)了奄容,又要部署幾千臺(tái)服務(wù)冰更,過(guò)完節(jié)后昂勒,還得下線這么多,累死了...”

對(duì)于大部分系統(tǒng)而言戈盈,流量并不是均勻的奠衔,比如電商系統(tǒng),在11.11大促期間塘娶,就需要臨時(shí)擴(kuò)容機(jī)器归斤,之后在下掉,如果是成百上千臺(tái)血柳,那就給運(yùn)維帶來(lái)非常大的工作量官册,有了docker就變得簡(jiǎn)單了,從5臺(tái)服務(wù)器變成500臺(tái)难捌,5000臺(tái)...都是分分鐘的事情膝宁。(也就是說(shuō)docker解決了快速擴(kuò)容鸦难,彈性伸縮)

docker的三大核心概念

在上面我們大白話說(shuō)了那么多,現(xiàn)在我們需要用專業(yè)術(shù)語(yǔ)來(lái)揭開(kāi)docker的3大核心概念了:鏡像/倉(cāng)庫(kù)/容器员淫。

鏡像(images)合蔽,就是上面我們說(shuō)的集裝箱;

倉(cāng)庫(kù)(repository)介返,就是碼頭拴事;

容器(container),就是運(yùn)行程序的地方圣蝎;

docker運(yùn)行一個(gè)程序的過(guò)程是:去倉(cāng)庫(kù)把鏡像拉到本地刃宵,然后用命令把鏡像運(yùn)行起來(lái),變成容器E枪(build構(gòu)建鏡像牲证;ship運(yùn)輸鏡像;run運(yùn)行的鏡像就是一個(gè)容器)


簡(jiǎn)單示例它們之間的關(guān)系

本質(zhì)來(lái)說(shuō)关面,鏡像就是一系列的文件坦袍,docker利用linux的ufs(聯(lián)合文件系統(tǒng))機(jī)制進(jìn)行存儲(chǔ)來(lái)達(dá)到分層的效果。比如/test1目錄下有a和b兩個(gè)文件等太,test2目錄下有c和d兩個(gè)文件捂齐,那么利用ufs可以達(dá)到/test下有a、b缩抡、c奠宜、d四個(gè)文件,即ufs是一種分層的文件系統(tǒng)缝其,可以將不同的目錄掛到同一個(gè)虛擬文件系統(tǒng)下挎塌。每一層鏡像層加載完畢后,會(huì)被看成同一個(gè)目錄内边,相當(dāng)于只有一個(gè)文件系統(tǒng),docker的這種文件系統(tǒng)就被稱作為鏡像待锈。

容器漠其,上面已經(jīng)提及過(guò),就是一個(gè)進(jìn)程竿音,可以把容器想象成一個(gè)虛擬機(jī)和屎,會(huì)有自己的文件系統(tǒng)。注意容器是可寫的柴信,而鏡像是只讀的宽气,因?yàn)檫\(yùn)行中的程序大部分有寫的需求,比如寫日志绪氛,修改一些文件什么的。如果容器需要對(duì)鏡像層的某些文件作修改争占,該如何處理呢臂痕?那么就把鏡像層中的文件拷貝到容器中猿涨,在容器中進(jìn)行修改,當(dāng)我們的應(yīng)用讀取文件的時(shí)候舆瘪,是從對(duì)頂層容器開(kāi)始查找英古,如果沒(méi)有才會(huì)開(kāi)始查找下一層(這樣我們就能讀取到修改的文件了昙读。)

倉(cāng)庫(kù),這里有點(diǎn)類似maven倉(cāng)庫(kù)的概念唠叛,其實(shí)就是為了傳輸鏡像艺沼。https://hub.docker.com/這個(gè)是docker官網(wǎng)給我們提供的遠(yuǎn)程倉(cāng)庫(kù)地址蕴掏,當(dāng)然公司內(nèi)部一般會(huì)有自己的私有鏡像中心。

上圖中挽荡,可以清楚的看到即供,同一個(gè)鏡像可以生成多個(gè)容器運(yùn)行,容器之間是相互獨(dú)立的青自。


好了,到這里性穿,本篇博客為大家介紹了docker的一些初步知識(shí)需曾,下一篇將帶大家實(shí)踐docker以及分析一個(gè)springboot項(xiàng)目的docker化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末商源,一起剝皮案震驚了整個(gè)濱河市谋减,隨后出現(xiàn)的幾起案子出爹,更是在濱河造成了極大的恐慌,老刑警劉巖总寻,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渐行,死亡現(xiàn)場(chǎng)離奇詭異铸董,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蕴忆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門孽文,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)夺艰,“玉大人郁副,你說(shuō)我怎么就攤上這事存谎“尉危” “怎么了稚失?”我有些...
    開(kāi)封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵句各,是天一觀的道長(zhǎng)凿宾。 經(jīng)常有香客問(wèn)我兼蕊,道長(zhǎng),這世上最難降的妖魔是什么产禾? 我笑而不...
    開(kāi)封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任亚情,我火速辦了婚禮蕾久,結(jié)果婚禮上僧著,老公的妹妹穿的比我還像新娘。我一直安慰自己栅迄,他們只是感情好皆怕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布愈腾。 她就那樣靜靜地躺著,像睡著了一般悦即。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辜梳,一...
    開(kāi)封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天作瞄,我揣著相機(jī)與錄音,去河邊找鬼乌庶。 笑死安拟,一個(gè)胖子當(dāng)著我的面吹牛宵喂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拙泽,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼顾瞻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼德绿!你這毒婦竟也來(lái)了移稳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎都许,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體塞椎,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忱屑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了急波。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡名段,死狀恐怖泣懊,靈堂內(nèi)的尸體忽然破棺而出馍刮,到底是詐尸還是另有隱情,我是刑警寧澤静稻,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布匈辱,位于F島的核電站,受9級(jí)特大地震影響押搪,放射性物質(zhì)發(fā)生泄漏大州。R本人自食惡果不足惜及穗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一苛白、第九天 我趴在偏房一處隱蔽的房頂上張望焚虱。 院中可真熱鬧,春花似錦躏率、人聲如沸薇芝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阅爽。三九已至付翁,卻和暖如春百侧,著一層夾襖步出監(jiān)牢的瞬間杂伟,已是汗流浹背赫粥。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工越平, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晦溪。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓挣跋,卻偏偏與公主長(zhǎng)得像三圆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子避咆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容