【軟件】Docker學(xué)習(xí)手記(1)

歡迎關(guān)注我的專欄( つ??ω??)つ【人工智能通識】


為什么需要Docker?

比如說你開發(fā)了一個軟件侣诺,前端基于Nodejs構(gòu)建裆泳,后端使用Python編寫,數(shù)據(jù)庫用了MySQL糜芳,還用了Redis做消息系統(tǒng)。它們每一個都有特定的版本魄衅,都使用了各種第三方的包峭竣,也包含了你自己寫的各種各樣代碼文件。

無論是前端還是后端還是數(shù)據(jù)庫什么的晃虫,一開始可能非常簡單皆撩,但是隨著開發(fā)的推進(jìn),代碼越來越多哲银,功能越來越多扛吞,用到的第三方包也越來越多,項目結(jié)構(gòu)也越來越復(fù)雜荆责。

如果這時候你買了一臺新電腦滥比,那么要讓這個項目能在新電腦上繼續(xù)開發(fā)下去,除了拷貝項目文件之外做院,你還得安裝一大堆的軟件盲泛,做一大堆的配置濒持,這些頭疼的工作可能耗費你幾小時甚至幾天的時間。

同樣寺滚,當(dāng)這種軟件在你的電腦上開發(fā)完畢之后柑营,要在客戶指定的電腦或者云服務(wù)器上運行起來,恐怕也不是件容易的事情村视。

而至于讓其他人來接手你的軟件由境,對它進(jìn)行維護和升級,即使那個人非常懂得編程能夠看懂你的代碼蓖议,但要搞清楚你用了幾個月甚至幾年不斷更迭、配置讥蟆、修補而成的錯綜復(fù)雜項目結(jié)構(gòu)勒虾,也絕對不是件容易事∪惩——實際上修然,讓他能夠把你的軟件移植到其他設(shè)備似乎都是不可能完成的工作。

我們需要一種開發(fā)和部署模式质况,能夠在任何可行的設(shè)備上快速重建我們軟件項目所必要的環(huán)境愕宋。

我們需要什么?

我們編寫的軟件并不僅僅是我們自己輸入的代碼结榄,還要依賴很多別人編寫的代碼(第三方包Dependences)中贝,以及運行在系統(tǒng)上面的其他庫和服務(wù)(系統(tǒng)庫Libraries)。

將軟件移植到其他設(shè)備上臼朗,除了拷貝我們自己編寫的文件邻寿,還要確保用到的第三方包Dependences也一個都不少,還要確保目標(biāo)設(shè)備的系統(tǒng)環(huán)境和我們開發(fā)測試時候一致视哑,這不僅要求系統(tǒng)的類型和版本都一致绣否,還要求系統(tǒng)上軟件環(huán)境和系統(tǒng)配置也都一致〉惨悖——這不是個輕松的事情蒜撮。

首先說第三方依賴,我們可能會用Python的pip install 命令安裝十?dāng)?shù)個甚至更多需要的模塊Modules跪呈,而Nodejs的npm命令直接或間接安裝的模塊可能有數(shù)十甚至上百個段磨。

在編寫代碼之前,你須要有一個強大且穩(wěn)定的第三方依賴管理工具耗绿。它可以從一開始就準(zhǔn)確的記錄你所有的安裝和卸載模塊記錄薇溃,而且還可以快速的將所有用到的模塊打包整理。

你的項目文件應(yīng)該包含【自己寫的代碼】【需要的第三方依賴包】兩部分構(gòu)成缭乘。要知道沐序,雖然在目標(biāo)電腦上批量重新安裝這些依賴包聽起來很美好琉用,但其中的不確定性一旦發(fā)生,你就會頭疼的要死策幼。

而至于操作系統(tǒng)環(huán)境邑时,唯一可行的就是將你用于開發(fā)的操作系統(tǒng)直接連鍋端到其他設(shè)備上。開發(fā)后把整個系統(tǒng)做成一個系統(tǒng)鏡像特姐,到目標(biāo)機器上安裝整個系統(tǒng)鏡像晶丘,然后你就擁有了一切。

——這聽起來有些夸張唐含,但使用虛擬化技術(shù)來說又是確實可行的浅浮,它的問題不在于鏡像整個操作系統(tǒng)的文件是否太大,而在于這個操作是否夠快捷枯。多人共同開發(fā)軟件的時候滚秩,快速的保持開發(fā)環(huán)境的同步是非常重要的。

同步系統(tǒng)鏡像的思路是行不通的淮捆,唯一可行的是使用云端的同一個操作系統(tǒng)運行代碼和進(jìn)行測試郁油。——每個開發(fā)者的電腦只擔(dān)當(dāng)一個代碼編輯器的作用攀痊,連IDE都不算桐腌。

理想的情況什么樣?

  1. 在云端有一臺測試服務(wù)器苟径,它可以生成不同的系統(tǒng)環(huán)境案站,每個項目單獨使用一個系統(tǒng)環(huán)境進(jìn)行開發(fā),各自安裝相關(guān)軟件棘街,各自進(jìn)行設(shè)置嚼吞,互不干擾。

  2. 項目團隊開發(fā)成員在各自的電腦上編寫代碼并隨時將代碼文件同步到測試服務(wù)器上蹬碧,測試服務(wù)器可以監(jiān)測到文件的變動舱禽,并且可以針對不同文件的改動而更新運行相應(yīng)的程序。
    比如說當(dāng)它發(fā)現(xiàn)后端Python代碼文件被更新的時候恩沽,它就會自動執(zhí)行命令來重啟這些Python程序誊稚;如果它發(fā)現(xiàn)Nodejs代碼文件發(fā)生變化的時候,就自動執(zhí)行命令重新編譯js文件生成新頁面代碼罗心。

  3. 當(dāng)團隊開發(fā)完成一個新版本并且經(jīng)過測試之后里伯,直接把測試服務(wù)器上運行的整個系統(tǒng)生成一個鏡像,再把這個鏡像部署到正式服務(wù)器之上渤闷,甚至部署到多個服務(wù)器之上(分布式部署)疾瓮。

開發(fā)過程中,我們可以隨時向測試服務(wù)器上的Git推送新版本代碼飒箭,當(dāng)然也可以隨時把代碼版本同步到其他Git服務(wù)上狼电,例如Github蜒灰。
最好我們也可以隨時把整個系統(tǒng)鏡像進(jìn)行備份,生成多個版本肩碟∏拷眩——這就需要鏡像文件不要太大,生成鏡像的時間也不要太久削祈。

在我們的這個夢想中翅溺,Docker將扮演的正是鏡像生成、管理和部署的角色髓抑。

<未完待續(xù)>


歡迎關(guān)注我的專欄( つ??ω??)つ【人工智能通識】


每個人的智能新時代

如果您發(fā)現(xiàn)文章錯誤哺眯,請不吝留言指正鼠冕;
如果您覺得有用湃番,請點喜歡疆柔;
如果您覺得很有用,歡迎轉(zhuǎn)載~


END

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末密末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子跛璧,更是在濱河造成了極大的恐慌严里,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件追城,死亡現(xiàn)場離奇詭異刹碾,居然都是意外死亡,警方通過查閱死者的電腦和手機座柱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門迷帜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人色洞,你說我怎么就攤上這事戏锹。” “怎么了火诸?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵锦针,是天一觀的道長。 經(jīng)常有香客問我置蜀,道長奈搜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任盯荤,我火速辦了婚禮馋吗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秋秤。我一直安慰自己宏粤,他們只是感情好脚翘,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著商架,像睡著了一般堰怨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛇摸,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天备图,我揣著相機與錄音,去河邊找鬼赶袄。 笑死揽涮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饿肺。 我是一名探鬼主播蒋困,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敬辣!你這毒婦竟也來了雪标?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤溉跃,失蹤者是張志新(化名)和其女友劉穎村刨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撰茎,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嵌牺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了龄糊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逆粹。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖炫惩,靈堂內(nèi)的尸體忽然破棺而出僻弹,到底是詐尸還是另有隱情,我是刑警寧澤他嚷,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布奢方,位于F島的核電站,受9級特大地震影響爸舒,放射性物質(zhì)發(fā)生泄漏蟋字。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一扭勉、第九天 我趴在偏房一處隱蔽的房頂上張望鹊奖。 院中可真熱鬧,春花似錦涂炎、人聲如沸忠聚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽两蟀。三九已至网梢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赂毯,已是汗流浹背战虏。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留党涕,地道東北人烦感。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像膛堤,于是被迫代替她去往敵國和親手趣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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