這篇文章給大家介紹如何理解docker,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)專注于青白江網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供青白江營(yíng)銷型網(wǎng)站建設(shè),青白江網(wǎng)站制作、青白江網(wǎng)頁(yè)設(shè)計(jì)、青白江網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造青白江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供青白江網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
隨著用戶的需求越來越多樣,系統(tǒng)的規(guī)模越來越龐大,運(yùn)行的軟件越來越復(fù)雜,環(huán)境配置問題所造成的的麻煩也層出不窮等等,為了解決這些問題,開源社區(qū)推出過不少優(yōu)秀的工具。這些工具雖然在某些程度上確實(shí)能解決部分問題,但是始終沒有一種方案能帶來“一勞永逸”的效果。
伴隨著信息技術(shù)的飛速發(fā)展,虛擬化的概念早已經(jīng)廣泛應(yīng)用到各種關(guān)鍵場(chǎng)景中。從20世紀(jì)60年代IBM推出的大型主機(jī)虛擬化,到后來以Xen、KVM為代表的虛擬機(jī)虛擬化,在到現(xiàn)在以Docker為代表的容器技術(shù),虛擬化技術(shù)自身也在不斷進(jìn)行創(chuàng)新和突破。傳統(tǒng)來看,虛擬化既可以通過硬件模擬來實(shí)現(xiàn),也可以通過操作系統(tǒng)軟件來實(shí)現(xiàn)。而容器技術(shù)則更為優(yōu)雅,它充分利用了操作系統(tǒng)本身已有的機(jī)制和特性,可以實(shí)現(xiàn)遠(yuǎn)超傳統(tǒng)虛擬機(jī)的輕量級(jí)虛擬化。Docker正式眾多容器技術(shù)中的佼佼者。
Docker的構(gòu)想是要實(shí)現(xiàn)“Build,Ship and Run Any App, Anywhere”??梢詫?shí)現(xiàn)通過對(duì)應(yīng)用的封裝(Packaging)、分發(fā)(Distribution)、部署(Deployment)、運(yùn)行(Runtime)生命周期進(jìn)行管理,達(dá)到應(yīng)用組件級(jí)別的“一次封裝,處處運(yùn)行”。這里的應(yīng)用組件,既可以是一個(gè)Web應(yīng)用、一個(gè)變異環(huán)境、也可以使一套數(shù)據(jù)庫(kù)平臺(tái)服務(wù),甚至一個(gè)操作系統(tǒng)或集群。
此外,現(xiàn)在主流的操作系統(tǒng)包括Linux各大的發(fā)行版、macOS、Windows等都已經(jīng)支持Docker。例如,Redhat RHEL6.5/CentOS 6.5、Ubuntu 16.04以及更新的版本,都已經(jīng)在官方軟件源中默認(rèn)帶有Docker軟件包。此外,各大云服務(wù)提供商也紛紛退出了基于Docker的服務(wù)。種種跡象表明Docker已經(jīng)是一個(gè)非常成熟的虛擬化技術(shù)了。
基于Linux平臺(tái)上的多項(xiàng)開源技術(shù),Docker提供了高效、敏捷和輕量級(jí)的容器方案,并支持部署到本地環(huán)境和多種主流云平臺(tái)??梢哉f,Docker首次為應(yīng)用的開發(fā)、運(yùn)行和部署提供了“一站式”的使用解決方案。
Docker提供了各種容器管理工具(如分發(fā)、版本、移植等),讓用戶無(wú)須關(guān)注底層的操作,更加簡(jiǎn)單明了的管理和使用容器;其次,Docker通過引入分層文件系統(tǒng)構(gòu)建和高效的鏡像機(jī)制,降低了遷移難度,極大地改善了用戶體驗(yàn)。用戶操作Docker容器就像操作應(yīng)用自身一樣簡(jiǎn)單。
早期的Docker代碼實(shí)現(xiàn)是直接基于LXC的。自0.9版本開始,Docker開發(fā)了libcontainer項(xiàng)目作為更廣泛的容器驅(qū)動(dòng)實(shí)現(xiàn),從而替換掉了LXC的實(shí)現(xiàn)。簡(jiǎn)單的講,讀者可以將Docker容器理解為一種輕量級(jí)的沙盒(sandbox)。每個(gè)容器內(nèi)運(yùn)行著一個(gè)應(yīng)用,不同的容器相互隔離,容器之間也可以通過網(wǎng)絡(luò)互相通信。容器的創(chuàng)建和停止十分快速,幾乎跟創(chuàng)建和終止原生應(yīng)用一致;另外,容器自身對(duì)系統(tǒng)資源的額外需求也十分有限,遠(yuǎn)遠(yuǎn)低于傳統(tǒng)虛擬機(jī)。很多時(shí)候,甚至直接把容器當(dāng)做應(yīng)用本身也沒有任何問題。
在云時(shí)代,開發(fā)者創(chuàng)建的應(yīng)用必須要能很方便地在網(wǎng)絡(luò)上傳播,也就是說應(yīng)用必須脫離底層物理硬件的顯示;同時(shí)必須是“任何時(shí)間任何地點(diǎn)”可獲取的。因此開發(fā)者們需要一種新型的創(chuàng)建分布式應(yīng)用程序的方式,快速分發(fā)和部署,而這正是Docker所能夠提供的最大優(yōu)勢(shì)。
舉個(gè)簡(jiǎn)單的例子,假設(shè)用戶試圖基于最常見的LAMP(Linux+Apache+MySQL+PHP)組合來構(gòu)建網(wǎng)站。按照傳統(tǒng)的做法,首先需要安裝Apache、MySQL和PHP以及他們各自運(yùn)行所依賴的環(huán)境;之后分別對(duì)他們進(jìn)行配置(包括創(chuàng)建合適的用戶、配置參數(shù)等);經(jīng)過大量的操作后,還需要進(jìn)行功能測(cè)試,看是否工作正常;如果不正常,則進(jìn)行功能測(cè)試,看是否功能正常;如果不正常,則進(jìn)行調(diào)試追蹤,意味著更多的時(shí)間代價(jià)和不可控的風(fēng)險(xiǎn)。可以想想,如果應(yīng)用數(shù)目變多,事情會(huì)變得更加難以處理。
更可怕的是,一旦需要服務(wù)器遷移(例如從亞馬遜遷移到其他云)往往需要對(duì)每個(gè)應(yīng)用都進(jìn)行重新部署和調(diào)試。這些瑣碎而無(wú)趣的“體力活”,極大地降低了用戶的工作效率。就起更遠(yuǎn),是這些應(yīng)用直接運(yùn)行在底層操作系統(tǒng)上,無(wú)法保證同一份應(yīng)用在不同的環(huán)境中行為一致。
而Docker提供了一種更為聰明的方式,通過容器來打包應(yīng)用、解耦應(yīng)用和運(yùn)行平臺(tái)。這意味著遷移的時(shí)候,只需要在新的服務(wù)器上啟動(dòng)需要的容器就可以了,無(wú)論新舊服務(wù)器時(shí)候是同一類型的平臺(tái)。這無(wú)意將幫助我們節(jié)約大量的寶貴時(shí)間,并降低部署過程中出現(xiàn)問題的風(fēng)險(xiǎn)。
對(duì)開發(fā)和運(yùn)維(DevOps)人員來說,最夢(mèng)寐以求的效果可能就是依次創(chuàng)建或配置,之后可以在任意地方、任意時(shí)間讓應(yīng)用正常運(yùn)行,而Docker恰恰是可以實(shí)現(xiàn)這一終極目標(biāo)的“瑞士軍刀”。具體說來,在開發(fā)和運(yùn)維過程中,Docker具有如下幾個(gè)方面的優(yōu)勢(shì):
更快速的交付和部署。使用Docker,開發(fā)人員可以使用鏡像來快速構(gòu)建一套標(biāo)準(zhǔn)的開發(fā)環(huán)境;開發(fā)完成之后,測(cè)試人員和運(yùn)維人員可以直接使用完全相同的環(huán)境來部署代碼。只要是開發(fā)測(cè)試過的代碼,就可以確保在生產(chǎn)環(huán)境無(wú)縫運(yùn)行。Docker可以快速創(chuàng)建和刪除容器,實(shí)現(xiàn)快速迭代,節(jié)約開發(fā)、測(cè)試、部署的大量時(shí)間。并且,整個(gè)過程全程可見,是團(tuán)隊(duì)更容易理解應(yīng)用的創(chuàng)建和過程。
更高效的資源利用。運(yùn)行Docker容器不需要額外的虛擬化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)的支持,Docker是內(nèi)核級(jí)的虛擬化,可以實(shí)現(xiàn)更高的性能,同時(shí)對(duì)資源的額外需求很低。與傳統(tǒng)虛擬機(jī)方式相比,Docker的性能要提高1~2個(gè)數(shù)量級(jí)。
更輕松的遷移和擴(kuò)展。Docker容器幾乎可以在任意的平臺(tái)上運(yùn)行,高闊物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等,同時(shí)支持主流的操作系統(tǒng)發(fā)行版本。這種兼容性讓用戶可以在不同平臺(tái)之間輕松地遷移應(yīng)用。
更簡(jiǎn)單的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的容器管理。
關(guān)于如何理解docker就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。