2 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
編者的話】有些開(kāi)發(fā)者可能還是不明白Docker對(duì)自己到底有多大的用處,因此翻譯Docker個(gè)人用例這篇文章中來(lái)介紹Docker在普通開(kāi)發(fā)者開(kāi)發(fā)過(guò)程中的用例。Docker如今贏得了許多關(guān)注,很多人覺(jué)得盛名之下其實(shí)難副,因?yàn)樗麄內(nèi)匀桓悴磺錎ocker和普通開(kāi)發(fā)者到底有什么關(guān)系。許多開(kāi)發(fā)者覺(jué)得Docker離自己很遠(yuǎn),Docker是生產(chǎn)環(huán)境中的工具,和自己無(wú)關(guān)。我也是花了很長(zhǎng)時(shí)間才想清楚作為普通開(kāi)發(fā)人員如何在自己的開(kāi)發(fā)中使用Docker。坦率地說(shuō),我仍處在學(xué)習(xí)的過(guò)程中。這篇文章提供了一個(gè)Docker用例列表,我希望它能更好地幫助你理解Docker并引發(fā)你的思考。本文只是描述Docker在普通開(kāi)發(fā)者日常的應(yīng)用,并不提供完整的解決方案。在介紹用例之前,我希望你能先記住這句話:“Docker是一個(gè)便攜的應(yīng)用容器”。你可以不知道Docker所說(shuō)的的“便攜式容器”到底是什么意思,但是你必須清楚Docker在日常中能帶來(lái)非常大的效率提升。當(dāng)你需要在容器內(nèi)運(yùn)行自己的應(yīng)用(當(dāng)然可以是任何應(yīng)用),Docker都提供了一個(gè)基礎(chǔ)系統(tǒng)鏡像作為運(yùn)行應(yīng)用時(shí)的基礎(chǔ)系統(tǒng)。也就是說(shuō),只要是Linux系統(tǒng)上的應(yīng)用都可以運(yùn)行在Docker中??梢栽贒ocker里面運(yùn)行數(shù)據(jù)庫(kù)嗎?當(dāng)然可以??梢栽贒ocker里面運(yùn)行Node.js網(wǎng)站服務(wù)器嗎?當(dāng)然可以??梢栽贒ocker里面運(yùn)行API服務(wù)器嗎?當(dāng)然可以。Docker并不在乎你的應(yīng)用程序是什么、做什么,Docker提供了一組應(yīng)用打包、傳輸和部署的方法,以便你能更好地在容器內(nèi)運(yùn)行任何應(yīng)用。下面的例子我自己經(jīng)常使用,當(dāng)然你有更好的案例也可以分享給我。嘗試新軟件對(duì)開(kāi)發(fā)者而言,每天會(huì)催生出的各式各樣的新技術(shù)都需要嘗試,然而開(kāi)發(fā)者卻不太可能為他們一一搭建好環(huán)境并進(jìn)行測(cè)試。時(shí)間非常寶貴,正是得益于Docker,讓我們有可能在一條或者幾條命令內(nèi)就搭建完環(huán)境。Docker有一個(gè)傻瓜化的獲取軟件的方法,Docker后臺(tái)會(huì)自動(dòng)獲得環(huán)境鏡像并且運(yùn)行環(huán)境。并不僅僅是新技術(shù)環(huán)境搭建用得到Docker。如果你想快速在你的筆記本上運(yùn)行一個(gè)MySQL數(shù)據(jù)庫(kù),或者一個(gè)Redis消息隊(duì)列,那么使用Docker便可以非常容易地做到。例如Docker只需要一條命令便可以運(yùn)行MySQL數(shù)據(jù)庫(kù):dockerrun-d-p3306:3306tutum/mysql。譯者注:雖然使用命令也能非常快地安裝MySQL數(shù)據(jù)庫(kù),但是當(dāng)用到最新的技術(shù)或者非常復(fù)雜的技術(shù)時(shí),使用Docker便會(huì)是個(gè)非常好的選擇,例如Gitlab,普通用戶大概需要一天的時(shí)間去搭建Gitlab平臺(tái),而Docker則只需要一條命令。進(jìn)行演示現(xiàn)在我經(jīng)常需要在周末用自己開(kāi)發(fā)的成果對(duì)客戶活著別人做一兩個(gè)演示。搭建演示環(huán)境的過(guò)程非常麻煩?,F(xiàn)在我發(fā)現(xiàn)Docker已經(jīng)成為我演示這些工具的最合理的方式。同時(shí),對(duì)于客戶來(lái)說(shuō),我可以直接將Docker鏡像提供給他們,而不必去做任何環(huán)境配置的工作,工作的效果也會(huì)和在他們演示中所看到的一模一樣,同時(shí)不必?fù)?dān)心他們的環(huán)境配置會(huì)導(dǎo)致我們的產(chǎn)品無(wú)法運(yùn)行。避免“我機(jī)器上可以運(yùn)行”無(wú)論是上一篇介紹的企業(yè)部署Docker還是本文的個(gè)人Docker用例,都提到了這個(gè)情況。因?yàn)榄h(huán)境配置不同,很多人在開(kāi)發(fā)中也會(huì)遇到這個(gè)情況,甚至開(kāi)發(fā)的軟件到了測(cè)試人員的機(jī)器上便不能運(yùn)行。但這都不是重點(diǎn)。重點(diǎn)是,如果我們有一個(gè)可靠的、可分發(fā)的標(biāo)準(zhǔn)開(kāi)發(fā)環(huán)境,那么我們的開(kāi)發(fā)將不會(huì)像現(xiàn)在這么痛苦。Docker便可以解決這個(gè)問(wèn)題。Docker鏡像并不會(huì)因?yàn)榄h(huán)境的變化而不能運(yùn)行,也不會(huì)在不同的電腦上有不同的運(yùn)行結(jié)果。可以給測(cè)試人員提交含有應(yīng)用的Docker鏡像,這樣便不再會(huì)發(fā)生“在我機(jī)器上是可以運(yùn)行的”這種事情,很大程度上減輕了開(kāi)發(fā)人員測(cè)試人員互相檢查機(jī)器環(huán)境設(shè)置帶來(lái)的時(shí)間成本。另一個(gè)Docker可以發(fā)揮用處的地方是培訓(xùn)班。除了Docker容器的隔離性之外,更能體會(huì)到Docker優(yōu)勢(shì)的地方在于環(huán)境搭建。培訓(xùn)班的新手每個(gè)人都要在環(huán)境搭建上花費(fèi)很多時(shí)間,但是如果在這里應(yīng)用到Docker的話,那么我們只需要把標(biāo)準(zhǔn)的運(yùn)行環(huán)境鏡像分發(fā)下去,然后就可以開(kāi)始上課了。使用Docker和使用虛擬機(jī)一樣簡(jiǎn)單,但是Docker要更方便、更輕量級(jí)。同時(shí),我們也可以告訴學(xué)員:“在培訓(xùn)的同時(shí),我們還將學(xué)到當(dāng)下最流行的技術(shù)——Docker”,這種雙贏的結(jié)局,何樂(lè)而不為呢。學(xué)習(xí)Linux腳本當(dāng)然這個(gè)原因看起來(lái)可能很奇怪,但是對(duì)不不熟悉Linux操作系統(tǒng)和Shell腳本的人來(lái)說(shuō),確實(shí)是一個(gè)好機(jī)會(huì)。即便本文并不是在講Linux,Linux的重要度仍然不言而喻。如果你用的是Windows,那么我給你一個(gè)建議:從云主機(jī)提供商那兒租用一臺(tái)云主機(jī):我推薦使用CoreOS系統(tǒng)的云主機(jī)。雖然這樣并不會(huì)讓你成為專業(yè)的Linux運(yùn)維,但是可以讓你快速地學(xué)到Linux基礎(chǔ)知識(shí),愛(ài)上命令行操作,并且慢慢開(kāi)始熟悉和欣賞Linux。更好地利用資源虛擬機(jī)的粒度是“虛擬出的機(jī)器”,而Docker的粒度則是“被限制的應(yīng)用”,相比較而言Docker的內(nèi)存占用更少,更加輕量級(jí)。對(duì)我來(lái)說(shuō)這是Docker的一個(gè)優(yōu)勢(shì):因?yàn)槲医?jīng)常在自己電腦中運(yùn)行多個(gè)Docker應(yīng)用,使用Docker比使用虛擬機(jī)更加簡(jiǎn)單,方便,粒度更細(xì),也能持續(xù)地跟蹤容器狀態(tài)。為微服務(wù)定制如果你一直在關(guān)注科技新聞的話,那么你應(yīng)該聽(tīng)說(shuō)過(guò)“微服務(wù)(Microservices)”的概念。Docker可以很好地和微服務(wù)結(jié)合起來(lái)。從概念上來(lái)說(shuō),一個(gè)微服務(wù)便是一個(gè)提供一整套應(yīng)用程序的部分功能,Docker便可以在開(kāi)發(fā)、測(cè)試和部署過(guò)程中一直充當(dāng)微服務(wù)的容器。甚至生產(chǎn)環(huán)境也可以在Docker中部署微服務(wù)。在云服務(wù)提供商之間移植大多數(shù)的云主機(jī)提供商已經(jīng)全面支持Docker。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),這表示你可以很方便地切換云服務(wù)提供商,當(dāng)然也可以很方便地將你本地的開(kāi)發(fā)環(huán)境移動(dòng)到云主機(jī)上,不需要本地上配置一次運(yùn)行環(huán)境、在云主機(jī)上還配置一次運(yùn)行環(huán)境。全面部署Docker(DockerhereandDockerthere)作為標(biāo)準(zhǔn)運(yùn)行環(huán)境可以極大地減輕應(yīng)用上線時(shí)的工作量和產(chǎn)生BUG。
- 2 回答
- 0 關(guān)注
- 2291 瀏覽
添加回答
舉報(bào)