資源描述:
《docker從入門(mén)到實(shí)踐.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、超人學(xué)院——Docker從入門(mén)到實(shí)踐基礎(chǔ)篇什么是DockerDocker是一個(gè)開(kāi)源項(xiàng)目,誕生于2013年初,最初是dotCloud公司內(nèi)部的一個(gè)業(yè)余項(xiàng)目。它基于Google公司推出的Go語(yǔ)言實(shí)現(xiàn)。項(xiàng)目后來(lái)加入了Linux基金會(huì),遵從了Apache2.0協(xié)議,項(xiàng)目代碼在GitHub上進(jìn)行維護(hù)。Docker自開(kāi)源后受到廣泛的關(guān)注和討論,以至于dotCloud公司后來(lái)都改名為DockerInc。Redhat已經(jīng)在其RHEL6.5中集中支持Docker;Google也在其PaaS產(chǎn)品中廣泛應(yīng)用。Docker項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。Docker的基礎(chǔ)是Linux容
2、器(LXC)等技術(shù)。在LXC的基礎(chǔ)上Docker進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶操作Docker的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。下面的圖片比較了Docker和傳統(tǒng)虛擬化方式的不同之處,可見(jiàn)容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng),而傳統(tǒng)方式則是在硬件層面實(shí)現(xiàn)。為什么要使用Docker?作為一種新興的虛擬化方式,Docker跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì)。首先,Docker容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。其次,Docker對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè)D
3、ocker容器。容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開(kāi)銷(xiāo)盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行10個(gè)不同的應(yīng)用就要起10個(gè)虛擬機(jī),而Docker只需要啟動(dòng)10個(gè)隔離的應(yīng)用即可。具體說(shuō)來(lái),Docker在如下幾個(gè)方面具有較大的優(yōu)勢(shì)。更快速的交付和部署對(duì)開(kāi)發(fā)和運(yùn)維(devop)人員來(lái)說(shuō),最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運(yùn)行。開(kāi)發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)的鏡像來(lái)構(gòu)建一套開(kāi)發(fā)容器,開(kāi)發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來(lái)部署代碼。Docker可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過(guò)程全程可見(jiàn),使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建
4、和工作的。Docker容器很輕很快!容器的啟動(dòng)時(shí)間是秒級(jí)的,大量地節(jié)約開(kāi)發(fā)、測(cè)試、部署的時(shí)間。更高效的虛擬化Docker容器的運(yùn)行不需要額外的hypervisor支持,它是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的性能和效率。更輕松的遷移和擴(kuò)展Docker容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。更簡(jiǎn)單的管理使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。對(duì)比傳統(tǒng)虛擬機(jī)總結(jié)特性容器虛擬機(jī)啟動(dòng)秒
5、級(jí)分鐘級(jí)硬盤(pán)使用一般為MB一般為GB性能接近原生弱于系統(tǒng)支持量單機(jī)支持上千個(gè)容器一般幾十個(gè)基本概念Docker包括三個(gè)基本概念鏡像(Image)容器(Container)倉(cāng)庫(kù)(Repository)理解了這三個(gè)概念,就理解了Docker的整個(gè)生命周期Docker鏡像Docker鏡像就是一個(gè)只讀的模板。例如:一個(gè)鏡像可以包含一個(gè)完整的ubuntu操作系統(tǒng)環(huán)境,里面僅安裝了Apache或用戶需要的其它應(yīng)用程序。鏡像可以用來(lái)創(chuàng)建Docker容器。Docker提供了一個(gè)很簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人那里下載一個(gè)已經(jīng)做好的鏡像來(lái)直接使用Docker容器
6、Docker利用容器來(lái)運(yùn)行應(yīng)用。容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開(kāi)始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái)。可以把容器看做是一個(gè)簡(jiǎn)易版的Linux環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。*注:鏡像是只讀的,容器在啟動(dòng)的時(shí)候創(chuàng)建一層可寫(xiě)層作為最上層。Docker倉(cāng)庫(kù)倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所。有時(shí)候會(huì)把倉(cāng)庫(kù)和倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry)混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽(tag)。倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(
7、Private)兩種形式。最大的公開(kāi)倉(cāng)庫(kù)是DockerHub,存放了數(shù)量龐大的鏡像供用戶下載。國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)包括DockerPool等,可以提供大陸用戶更穩(wěn)定快速的訪問(wèn)。當(dāng)然,用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)私有倉(cāng)庫(kù)。當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用push命令將它上傳到公有或者私有倉(cāng)庫(kù),這樣下次在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí)候,只需要從倉(cāng)庫(kù)上pull下來(lái)就可以了。*注:Docker倉(cāng)庫(kù)的概念跟Git類似,注冊(cè)服務(wù)器可以理解為GitHub這樣的托管服