您好,登錄后才能下訂單哦!
Docker的基礎(chǔ)理論與關(guān)鍵點(diǎn)是怎么樣的,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
一般來(lái)說(shuō),虛擬化既可以通過(guò)硬件模擬來(lái)實(shí)現(xiàn),例如 Vmware、KVM等,主要是通過(guò)虛擬硬件的方式,重新創(chuàng)建一個(gè)操作系統(tǒng),操作系統(tǒng)本身并不知道當(dāng)前的硬件是否真的存在,這種形式又稱為操作系統(tǒng)級(jí)虛擬化。
而現(xiàn)在以Docker為代表的容積技術(shù),為虛擬化技術(shù)提供了創(chuàng)新和突破。
Docker 是使用容器技術(shù)實(shí)現(xiàn)應(yīng)用虛擬化的一個(gè)開(kāi)源項(xiàng)目。
它與傳統(tǒng)的虛擬機(jī)技術(shù)有本質(zhì)的區(qū)別,虛擬機(jī)技術(shù)虛擬出來(lái)的單個(gè)虛擬機(jī)可以部署各種應(yīng)用,本質(zhì)來(lái)說(shuō)就是多了一臺(tái)可遷移的操作系統(tǒng);而Docker是一個(gè)輕量級(jí)容器,主要是針對(duì)應(yīng)用進(jìn)行定制,一個(gè)Docker容器封裝一個(gè)應(yīng)用,提供了這個(gè)應(yīng)用運(yùn)行的環(huán)境,所以被稱為“應(yīng)用的集裝箱”,這樣細(xì)粒度更高。
Docker是基于操作系統(tǒng)的軟件,他利用了操作系統(tǒng)已有的特性,可以實(shí)現(xiàn)遠(yuǎn)超傳統(tǒng)虛擬機(jī)的輕量級(jí)虛擬化,主要有如下幾點(diǎn):
1、更快的交付和部署,開(kāi)發(fā)人員可以通過(guò)鏡像快速構(gòu)建開(kāi)發(fā)環(huán)境,測(cè)試人員可以通過(guò)完全相同的環(huán)境來(lái)進(jìn)行測(cè)試,通過(guò)Docker部署也會(huì)變的簡(jiǎn)單高效。
2、更高效的資源利用,Docker本身對(duì)資源的消耗極低,這方面的性能傳統(tǒng)虛擬機(jī)是無(wú)法比擬的,這樣一臺(tái)服務(wù)器可以構(gòu)建更多的Docker應(yīng)用。
3、更輕松的擴(kuò)展和遷移,Docker幾乎可以在任何平臺(tái)上運(yùn)行。
4、更簡(jiǎn)單的更新管理,通過(guò)Dockerfile,可以通過(guò)簡(jiǎn)單的修改可以實(shí)現(xiàn)以往大量的更新工作。
使用Docker所有的時(shí)間基本都是在處理它的三大核心要素:鏡像、容器、倉(cāng)庫(kù)。
鏡像 是一個(gè)只讀模版,是對(duì)容器的定義,就像Java 中 的類一樣,通過(guò)類可以創(chuàng)建實(shí)例,實(shí)例就是容器,容器則是我們真正運(yùn)行起來(lái)提供服務(wù)的應(yīng)用,通過(guò)提交容器可以形成新的鏡像,遷移鏡像又可以在其他服務(wù)器生成容器。
倉(cāng)庫(kù)是指存放鏡像的地方,目前Docker的倉(cāng)庫(kù)(Docker Hub)中存放了非常多的基礎(chǔ)鏡像文件,我們可以直接下載作為應(yīng)用的基礎(chǔ)模版。
當(dāng)然我們也可以搭建我們的私人倉(cāng)庫(kù),在內(nèi)部網(wǎng)絡(luò)內(nèi)共享我們的鏡像。
Docker 是誕生于 Linux的一種容器化虛擬化技術(shù),深度運(yùn)用了Linux操作系統(tǒng)的多向底層支持技術(shù),通過(guò)這些技術(shù)來(lái)實(shí)現(xiàn) Docker 的容器級(jí)虛擬化。
命名空間(Namespace)是Linux內(nèi)核的一個(gè)強(qiáng)大特性,利用這一特性每個(gè)容器都擁有自己獨(dú)立的命名空間,運(yùn)行在其中的應(yīng)用就像在獨(dú)立的操作系統(tǒng)環(huán)境中一樣,容器之間資源獨(dú)立、互不影響。
這種資源隔離特性隔離了主機(jī)名與域名、進(jìn)程編號(hào)、內(nèi)存、網(wǎng)絡(luò)設(shè)備、文件系統(tǒng)、用戶和用戶組,雖然所有的容器都通過(guò)操作系統(tǒng)共享了主機(jī)的硬件資源,但是通過(guò)Namespace實(shí)現(xiàn)了基于操作系統(tǒng)級(jí)別的資源隔離,這種形式效率很高。
控制組(Control Group)也是Linux內(nèi)核的一個(gè)特性、主要對(duì)共享資源進(jìn)行隔離、限制。Docker通過(guò)控制分配到容器的資源,實(shí)現(xiàn)了避免多個(gè)容器同事運(yùn)行是對(duì)宿主機(jī)系統(tǒng)的資源競(jìng)爭(zhēng)。
控制組主要提供了如下功能:
資源限制,可以將組設(shè)置為不超過(guò)設(shè)定的內(nèi)存限制。
優(yōu)先級(jí),設(shè)置優(yōu)先級(jí)可以讓一些組優(yōu)先得到更多的CPU資源。
資源審計(jì),對(duì)每個(gè)組分配的資源進(jìn)行統(tǒng)計(jì)。
隔離,是一個(gè)組不能看到另一個(gè)組的資源(包括進(jìn)程,網(wǎng)絡(luò)連接和文件系統(tǒng))。
控制,控制掛起,重新啟動(dòng)等操作。
聯(lián)合文件系統(tǒng)是Linux一種高性能分層文件系統(tǒng),目前有多種實(shí)現(xiàn)技術(shù)方案,它具有兩個(gè)基本特性:
每一次修改作為一次提交,并層層疊加
將不同的目錄掛在到同一個(gè)虛擬文件系統(tǒng)下
聯(lián)合文件系統(tǒng)是Docker實(shí)現(xiàn)的基礎(chǔ)技術(shù),Docker鏡像可以通過(guò)分層來(lái)繼承,例如 用戶基于基礎(chǔ)鏡像制作各種不同的應(yīng)用鏡像,這些鏡像通用了一個(gè)基礎(chǔ)鏡像,這些應(yīng)用只用記錄這些分層信息,從而大大提升了存儲(chǔ)效率。
我們可以通過(guò) docker history 命令查看一個(gè)鏡像的分層組成。
將不同的目錄掛在到同一個(gè)虛擬文件系統(tǒng)下,這樣就實(shí)現(xiàn)了外置數(shù)據(jù)卷的掛載。
對(duì)于Docker鏡像來(lái)說(shuō)構(gòu)成鏡像的這些層是不可修改的,只讀的,當(dāng)Docker利用鏡像啟動(dòng)一個(gè)容器時(shí),將在鏡像文件系統(tǒng)的最頂端掛載一個(gè)新的可讀寫(xiě)層給容器,容器中內(nèi)容的更新會(huì)發(fā)生在可讀寫(xiě)層。當(dāng)所操作的對(duì)象位于較深的層時(shí),需要先復(fù)制到最上面的可讀寫(xiě)層,當(dāng)數(shù)據(jù)對(duì)象較大時(shí),IO性能會(huì)較差,所以一般通過(guò)數(shù)據(jù)卷掛載的方式,而不是直接修改鏡像內(nèi)的數(shù)據(jù)就是這個(gè)原因。
看完上述內(nèi)容,你們掌握Docker的基礎(chǔ)理論與關(guān)鍵點(diǎn)是怎么樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。