中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Docker虛擬化技術(shù)概述及部署安裝

2019-12-13    來(lái)源:多智時(shí)代

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

一、虛擬化概述及簡(jiǎn)介

通俗的說(shuō),虛擬化就是把物理資源轉(zhuǎn)變?yōu)檫壿嬌峡梢怨芾淼馁Y源,以打破物理結(jié)構(gòu)間的壁壘,計(jì)算元件運(yùn)行在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上,可以擴(kuò)大硬件的容量,簡(jiǎn)化軟件的重新配置過(guò)程。

Docker虛擬化技術(shù)概述及部署安裝

允許一個(gè)平臺(tái)同時(shí)運(yùn)行多個(gè)操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率,是一個(gè)為了簡(jiǎn)化管理,優(yōu)化資源的解決方案。

目前主流的虛擬化技術(shù)主要有:KVM、Xen、VMware、VirtualBox、Docker,虛擬化技術(shù)也越來(lái)越廣泛的應(yīng)用在企業(yè)中,例如Taobao、Google等。

虛擬化原理:虛擬化解決方案的底部是要進(jìn)行虛擬化的物理機(jī)器。這臺(tái)機(jī)器可能直接支持虛擬化,也可能不會(huì)直接支持虛擬化;那么就需要系統(tǒng)管理程序?qū)拥闹С。系統(tǒng)管理程序(Virtual machine monitor),或稱為 VMM,可以看作是平臺(tái)硬件和操作系統(tǒng)的抽象化。在某些情況中,這個(gè)系統(tǒng)管理程序就是一個(gè)操作系統(tǒng);此時(shí),它就稱為主機(jī)操作系統(tǒng)。

完全擬化技術(shù)實(shí)際上是通過(guò)軟件實(shí)現(xiàn)對(duì)操作系統(tǒng)的資源再分配,比較成熟,例如我們的KVM、virtualBOX;

而半虛擬化技術(shù)則是通過(guò)代碼修改已有的系統(tǒng),形成一種新的可虛擬化的系統(tǒng),調(diào)用硬件資源去安裝多個(gè)系統(tǒng),整體速度上相對(duì)高一點(diǎn),代表產(chǎn)品有Xen。

二、Docker入門(mén)簡(jiǎn)介

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。

容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app)。幾乎沒(méi)有性能開(kāi)銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語(yǔ)言、框架或包括系統(tǒng)。

"Docker"應(yīng)該是2014年最火爆的技術(shù)之一,如果沒(méi)有聽(tīng)說(shuō)過(guò),那么你就out了,2015年將開(kāi)啟新的跨越。

Docker 自開(kāi)源后受到廣泛的關(guān)注和討論,以至于 dotCloud 公司后來(lái)都改名為 Docker Inc。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 容器(LXC)等技術(shù)。

在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。

下面對(duì)比了Docker 和傳統(tǒng)虛擬化(KVM、XEN等)方式的不同之處,Docker容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng),而傳統(tǒng)方式則是在硬件的基礎(chǔ)上,虛擬出自己的系統(tǒng),再在系統(tǒng)上部署相關(guān)的APP應(yīng)用。

虛擬化要運(yùn)行一下Nginx軟件

三、Docker虛擬化有三個(gè)概念需要理解,分別鏡像、容器、倉(cāng)庫(kù)。

鏡像:docker的鏡像其實(shí)就是模板,跟我們常見(jiàn)的ISO鏡像類似,是一個(gè)樣板。

容器:使用鏡像常見(jiàn)的應(yīng)用或者系統(tǒng),我們稱之為一個(gè)容器。

倉(cāng)庫(kù):倉(cāng)庫(kù)是存放鏡像的地方,分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式。

Docker LXC及Cgroup

Docker最早為 LXC+AUFS組合,Docker0.9.0版本開(kāi)始引入libcontainer,可以視作LXC的替代品)。其中LXC負(fù)責(zé)資源管理,AUFS負(fù)責(zé)鏡像管理;而LXC包括cgroup、namespace、chroot等組件,并通過(guò)cgroup進(jìn)行資源管理。

從資源管理來(lái)看,Docker、LXC、Cgroup三者的關(guān)系是:Cgroup在最底層落實(shí)資源管理,LXC在cgroup上封裝了一層,Docker又在LXC封裝了一層,要想學(xué)好Docker,需要了解負(fù)責(zé)資源管理的CGroup和LXC。

Cgroups是control groups的縮寫(xiě),是Linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組(process groups)所使用的物理資源(如:CPU, Memory, IO等)的機(jī)制。

最初由Google的工程師提出,后來(lái)被整合進(jìn)Linux內(nèi)核。Cgroups也是LXC為實(shí)現(xiàn)虛擬化所使用的資源管理手段,可以說(shuō)沒(méi)有Cgroups就沒(méi)有LXC,也就沒(méi)有Docker。

Cgroups最初的目標(biāo)是為資源管理提供的一個(gè)統(tǒng)一的框架,既整合現(xiàn)有的Cpuset等子系統(tǒng),也為未來(lái)開(kāi)發(fā)新的子系統(tǒng)提供接口,F(xiàn)在的Cgroups適用于多種應(yīng)用場(chǎng)景,從單個(gè)進(jìn)程的資源控制,到實(shí)現(xiàn)操作系統(tǒng)層次的虛擬化(OS Level Virtualization)。

LinuxContainer容器可以提供輕量級(jí)的虛擬化,以便隔離進(jìn)程和資源,而且不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜性。容器有效地將由單個(gè)操作系統(tǒng)管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。

LXC建立在CGroup基礎(chǔ)上,我們可以粗略的認(rèn)為L(zhǎng)XC = Cgroup+ namespace + Chroot + veth +用戶態(tài)控制腳本。LXC利用內(nèi)核的新特性(CGroup)來(lái)提供用戶空間的對(duì)象,用來(lái)保證資源的隔離和對(duì)于應(yīng)用或者系統(tǒng)的資源控制。

典型的Linux文件系統(tǒng)由bootfs和rootfs兩部分組成,bootfs(boot file system)主要包含 bootloader和kernel,bootloader主要是引導(dǎo)加載kernel,當(dāng)kernel被加載到內(nèi)存中后 bootfs就被umount。rootfs (root file system) 包含的就是典型 Linux 系統(tǒng)中的/dev,/proc,/bin,/etc等標(biāo)準(zhǔn)目錄和文件。

Docker容器的文件系統(tǒng)最早是建立在Aufs基礎(chǔ)上的,Aufs(Another Union File System)是一種Union FS, 簡(jiǎn)單來(lái)說(shuō)就是支持將不同的目錄掛載到同一個(gè)虛擬文件系統(tǒng)下,并實(shí)現(xiàn)一種layer的概念。

由于Aufs未能加入到Linux內(nèi)核,考慮到兼容性問(wèn)題,加入了Devicemapper的支持。Docker目前默認(rèn)運(yùn)行在Devicemapper基礎(chǔ)上。

Aufs將掛載到同一虛擬文件系統(tǒng)下的多個(gè)目錄分別設(shè)置成read-only,read-write以及whiteout-able權(quán)限,對(duì)read-only目錄只能讀,而寫(xiě)操作只能實(shí)施在read-write目錄中。重點(diǎn)在于,寫(xiě)操作是在read-only上的一種增量操作,不影響read-only目錄。當(dāng)掛載目錄的時(shí)候要嚴(yán)格按照各目錄之間的這種增量關(guān)系,將被增量操作的目錄優(yōu)先于在它基礎(chǔ)上增量操作的目錄掛載,待所有目錄掛載結(jié)束了,繼續(xù)掛載一個(gè)read-write目錄,如此便形成了一種層次結(jié)構(gòu)。

傳統(tǒng)的Linux加載bootfs時(shí)會(huì)先將rootfs設(shè)為read-only,然后在系統(tǒng)自檢之后將rootfs從read-only改為read-write,然后我們就可以在rootfs上進(jìn)行寫(xiě)和讀的操作了。但Docker的鏡像卻不是這樣,它在bootfs自檢完畢之后并不會(huì)把rootfs的read-only改為read-write。而是利用union mount(UnionFS的一種掛載機(jī)制)將一個(gè)或多個(gè)read-only的rootfs加載到之前的read-only的rootfs層之上。

在加載了這么多層的rootfs之后,仍然讓它看起來(lái)只像是一個(gè)文件系統(tǒng),在Docker的體系里把union mount的這些read-only的rootfs叫做Docker的鏡像。但是,此時(shí)的每一層rootfs都是read-only的,我們此時(shí)還不能對(duì)其進(jìn)行操作。當(dāng)我們創(chuàng)建一個(gè)容器,也就是將Docker鏡像進(jìn)行實(shí)例化,系統(tǒng)會(huì)在一層或是多層read-only的rootfs之上分配一層空的read-write的rootfs。

Device Mapper 是 Linux2.6 內(nèi)核中支持邏輯卷管理的通用設(shè)備映射機(jī)制,它為實(shí)現(xiàn)用于存儲(chǔ)資源管理的塊設(shè)備驅(qū)動(dòng)提供了一個(gè)高度模塊化的內(nèi)核架構(gòu),Device Mapper的內(nèi)核體系架構(gòu)

在內(nèi)核中它通過(guò)一個(gè)一個(gè)模塊化的 target driver 插件實(shí)現(xiàn)對(duì) IO 請(qǐng)求的過(guò)濾或者重新定向等工作,當(dāng)前已經(jīng)實(shí)現(xiàn)的 target driver 插件包括軟 raid、軟加密、邏輯卷?xiàng)l帶、多路徑、鏡像、快照等,圖中 linear、mirror、snapshot、multipath 表示的就是這些 target driver。Device mapper 進(jìn)一步體現(xiàn)了在 Linux 內(nèi)核設(shè)計(jì)中策略和機(jī)制分離的原則,將所有與策略相關(guān)的工作放到用戶空間完成,內(nèi)核中主要提供完成這些策略所需要的機(jī)制。

Device mapper 用戶空間相關(guān)部分主要負(fù)責(zé)配置具體的策略和控制邏輯,比如邏輯設(shè)備和哪些物理設(shè)備建立映射,怎么建立這些映射關(guān)系等等,而具體過(guò)濾和重定向 IO 請(qǐng)求的工作由內(nèi)核中相關(guān)代碼完成。因此整個(gè) device mapper 機(jī)制由兩部分組成--內(nèi)核空間的 device mapper 驅(qū)動(dòng)、用戶空間的device mapper 庫(kù)以及它提供的 dmsetup 工具。

四、Docker虛擬化特點(diǎn)

跟傳統(tǒng)VM比較具有如下優(yōu)點(diǎn):

操作啟動(dòng)快

運(yùn)行時(shí)的性能可以獲取極大提升,管理操作(啟動(dòng),停止,開(kāi)始,重啟等等) 都是以秒或毫秒為單位的。

輕量級(jí)虛擬化

你會(huì)擁有足夠的"操作系統(tǒng)",僅需添加或減小鏡像即可。在一臺(tái)服務(wù)器上可以布署100~1000個(gè)Containers容器。但是傳統(tǒng)虛擬化,你虛擬10-20個(gè)虛擬機(jī)就不錯(cuò)了。

開(kāi)源免費(fèi)

開(kāi)源的,免費(fèi)的,低成本的。由現(xiàn)代Linux內(nèi)核支持并驅(qū)動(dòng)。注* 輕量的Container必定可以在一個(gè)物理機(jī)上開(kāi)啟更多"容器",注定比VMs要便宜。

前景及云支持

正在越來(lái)越受歡迎,包括各大主流公司都在推動(dòng)docker的快速發(fā)展,性能有很大的優(yōu)勢(shì)。

跟傳統(tǒng)VM比較具有如下缺點(diǎn):

  • 目前知道的人比較少;

  • 相關(guān)的技術(shù)資料欠缺;

  • Go語(yǔ)言還沒(méi)完全成熟。

五、為什么使用Docker

Docker 在如下幾個(gè)方面具有較大的優(yōu)勢(shì):

更快速的交付和部署

Docker在整個(gè)開(kāi)發(fā)周期都可以完美的輔助你實(shí)現(xiàn)快速交付。Docker允許開(kāi)發(fā)者在裝有應(yīng)用和服務(wù)本地容器做開(kāi)發(fā)?梢灾苯蛹傻娇沙掷m(xù)開(kāi)發(fā)流程中。

開(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)建和工作的。 Docker 容器很輕很快!容器的啟動(dòng)時(shí)間是秒級(jí)的,大量地節(jié)約開(kāi)發(fā)、測(cè)試、部署的時(shí)間。

高效的部署和擴(kuò)容

Docker 容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。

Docker的兼容性和輕量特性可以很輕松的實(shí)現(xiàn)負(fù)載的動(dòng)態(tài)管理。你可以快速擴(kuò)容或方便的下線的你的應(yīng)用和服務(wù),這種速度趨近實(shí)時(shí)。

更高的資源利用率

Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開(kāi)銷盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動(dòng) 10 個(gè)隔離的應(yīng)用即可。

更簡(jiǎn)單的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。

Docker引擎架構(gòu)

  • Server是一個(gè)常駐進(jìn)程;

  • REST API 實(shí)現(xiàn)了client和server間的交互協(xié)議;

  • CLI 實(shí)現(xiàn)容器和鏡像的管理,為用戶提供統(tǒng)一的操作界面。

Docker使用C/S架構(gòu),Client 通過(guò)接口與Server進(jìn)程通信實(shí)現(xiàn)容器的構(gòu)建,運(yùn)行和發(fā)布。client和server可以運(yùn)行在同一臺(tái)集群,也可以通過(guò)跨主機(jī)實(shí)現(xiàn)遠(yuǎn)程通信。

標(biāo)簽: 虛擬化 操作系統(tǒng) 應(yīng)用程序 計(jì)算機(jī) 解決方案 虛擬化技術(shù) 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:更人性化的會(huì)議直播

下一篇:容器集群部署 選好編排工具是關(guān)鍵