溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker與傳統(tǒng)虛擬化的區(qū)別是什么

發(fā)布時(shí)間:2021-12-14 11:44:33 來(lái)源:億速云 閱讀:731 作者:iii 欄目:云計(jì)算

這篇文章主要介紹“docker與傳統(tǒng)虛擬化的區(qū)別是什么”,在日常操作中,相信很多人在docker與傳統(tǒng)虛擬化的區(qū)別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”docker與傳統(tǒng)虛擬化的區(qū)別是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

docker是什么?

       docker,它是一個(gè)基于LXC(LinuX Container)的高級(jí)容器引擎,使用Go語(yǔ)言開發(fā),遵循Apache2.0協(xié)議,全部開源代碼均托管在github上(https://github.com/docker/docker)。它誕生于2013年初,最初發(fā)起者是dotCloud公司,該公司現(xiàn)已經(jīng)改名為Docker Inc,專注于Docker相關(guān)技術(shù)和產(chǎn)品的開發(fā)。

       目前,主流的linux、windows和mac都已經(jīng)支持docker。需要注意的是,由于docker是基于LXC的,所以除了linux之外的操作系統(tǒng),都是靠在虛擬機(jī)里面跑linux,再在linux上跑docker來(lái)實(shí)現(xiàn)的。

       docker誕生的主要目標(biāo)是"Build,Ship and Run Any App,Anywhere",即通過對(duì)應(yīng)用組件的封裝(Packaging)、分發(fā)(Deployment)、部署(Deployment)、運(yùn)行(Runtime)等生命周期的管理,達(dá)到應(yīng)用組件級(jí)別的"一次封裝,到處運(yùn)行"。這里的應(yīng)用組件,既可以是一個(gè)web應(yīng)用,也可以是一套數(shù)據(jù)庫(kù)服務(wù),甚至是一個(gè)操作系統(tǒng)或者編譯器。


 

LXC是什么?

       docker引擎的基礎(chǔ)是Linux容器(linux container,LXC)技術(shù)。IBM DevelperWorks上給出了關(guān)于容器技術(shù)的準(zhǔn)確描述:

       容器有效地將單個(gè)操作系統(tǒng)管理的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有沖突的資源使用需求。與虛擬化相比,這樣既不需要指令級(jí)模擬,也不需要即時(shí)編譯。容器可以在核心CPU本地運(yùn)行指令,而不需要任何專門的解釋機(jī)制。此外,也避免了準(zhǔn)虛擬化(paravirtualization)和系統(tǒng)調(diào)用替換中的復(fù)雜性。

       liunux容器并不是一個(gè)全新的概念,早期的容器技術(shù)有chroot、Solaris Containers、FreeBSD jail、linux-VServer、Solaris Zones、OpenVZ、lxc等。雖然這些技術(shù)發(fā)展很早,但是并沒有集成到linux內(nèi)核中去,使用起來(lái)很不方便,比如OpenVZ需要先給操作系統(tǒng)打上特定的內(nèi)盒補(bǔ)丁才能使用。LXC項(xiàng)目借鑒了前人成熟的容器設(shè)計(jì)理念,并給予一系列新的內(nèi)核特性實(shí)現(xiàn)了更具擴(kuò)展性的虛擬化容器方案,并且被集成到了主流linux內(nèi)核中,進(jìn)而成為linux系統(tǒng)輕量級(jí)容器技術(shù)的事實(shí)標(biāo)準(zhǔn)。

       在LXC的基礎(chǔ)上,docker做了很大的改善,比如:

1、LXC的定位是作為一種虛擬機(jī)的替代方案。雖然所有的軟件都可以安裝在由 LXC 或者 Docker 管理的容器中,但是 Docker 更傾向于在一個(gè)容器中運(yùn)行一個(gè)應(yīng)用
 

2、每個(gè)LXC容器之間或許不兼容,但是 docker 采用了一種標(biāo)準(zhǔn)的配置方法使得由不同docker創(chuàng)建出的LXC能夠完全兼容

3、Docker實(shí)現(xiàn)了類似 git 的容器版本管理方法,并且能夠進(jìn)行增量更新。

4、可以創(chuàng)建 base image 并將其保存在遠(yuǎn)程倉(cāng)庫(kù) (repository) 中以便復(fù)用,其他容器可以在其基礎(chǔ)上進(jìn)行創(chuàng)建并保存為新的image。

5、docker提供了各種容器管理工具(如分發(fā)、版本、移植等)讓用戶無(wú)需關(guān)注底層的操作,可以簡(jiǎn)單明了地管理和使用容器

6、Docker管理著一個(gè)公共的 image 庫(kù)方便用戶分享自己的image,同時(shí)公司也可以構(gòu)造自己私有的 image 庫(kù)。

7、Docker的容器是根據(jù) Dockerfile 構(gòu)建的,你可以在構(gòu)建 image 的過程中,根據(jù)需要運(yùn)行任何命令和程序。

8、因?yàn)?docker 越來(lái)越流行,有大量的方法能夠?qū)⑵漭p易地集成到開發(fā)過程中,比如可以采用統(tǒng)一的方法來(lái)構(gòu)造用于持續(xù)集成的環(huán)境和開發(fā)環(huán)境的容器。
 


Docker與虛擬機(jī)的區(qū)別

       其實(shí),docker和虛擬機(jī)都是屬于虛擬化技術(shù)。而虛擬化技術(shù)又分了很多種類。比如VM、KVM這種全虛擬化和早期的Xen這種半虛擬化。而docker則是屬于操作系統(tǒng)級(jí)虛擬化。

       像VM、KVM之類的虛擬出來(lái)的都是虛擬機(jī),而docker作為一種輕量級(jí)的虛擬化方式,那么docker在運(yùn)行應(yīng)用上跟傳統(tǒng)的虛擬機(jī)方式有哪些顯著優(yōu)勢(shì)呢?

1、docker容器很快,啟動(dòng)和停止可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快的很多

2、docker容器對(duì)系統(tǒng)資源需求很少,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè)docker容器

3、docker通過類似git的操作來(lái)方便用戶獲取、分發(fā)和更新應(yīng)用鏡像,指令簡(jiǎn)明,學(xué)習(xí)成本很低

4、docker通過dockerfile配置文件來(lái)支持靈活的自動(dòng)化創(chuàng)建和部署機(jī)制,提高工作效率


下面是docker容器技術(shù)和傳統(tǒng)虛擬機(jī)技術(shù)的特性比較:

特性容器虛擬機(jī)
啟動(dòng)速度秒級(jí)分鐘級(jí)
硬盤使用一般為MB一般為GB
性能接近原生弱于
 
系統(tǒng)支持量單機(jī)支持上千個(gè)容器一般幾十個(gè)
隔離性安全隔離安全隔離

       docker的這些優(yōu)勢(shì)是什么造成的呢?我們可以先看下圖:

docker與傳統(tǒng)虛擬化的區(qū)別是什么

       傳統(tǒng)虛擬化是在硬件層面實(shí)現(xiàn)虛擬化,需要有額外的虛擬機(jī)管理應(yīng)用和虛擬機(jī)操作系統(tǒng)層,而docker容器卻不需要這兩層,而是直接使用操作系統(tǒng)的系統(tǒng)調(diào)用接口。正因?yàn)檫@樣子,docker容器除了運(yùn)行其中的應(yīng)用之外,基本不消耗額外的系統(tǒng)資源,保證應(yīng)用性能的同時(shí),盡量減小系統(tǒng)開銷。傳統(tǒng)虛擬機(jī)方式,運(yùn)行N個(gè)不同的應(yīng)用就要啟動(dòng)N個(gè)虛擬機(jī)(每個(gè)虛擬機(jī)需要單獨(dú)分配內(nèi)存、磁盤等資源),而docker只需要啟動(dòng)N個(gè)隔離的容器,并將應(yīng)用放到容器中即可,這樣子就減少了很多的資源消耗。


docker在軟件開發(fā)流程中的優(yōu)勢(shì)

       docker在設(shè)計(jì)之初就有以下幾個(gè)目的:

1、加強(qiáng)開發(fā)人員寫代碼的開發(fā)環(huán)境和應(yīng)用程序要部署的生產(chǎn)環(huán)境的一致性,從而降低那種"開發(fā)一切正常,肯定是運(yùn)維的問題"的風(fēng)險(xiǎn)。

2、縮短代碼從開發(fā)、測(cè)試到部署、上線運(yùn)行的周期,讓你的程序具備可以執(zhí)行,易于構(gòu)建、并易于協(xié)作

3、docker鼓勵(lì)面向服務(wù)的架構(gòu)和微服務(wù)架構(gòu)。docker推薦單個(gè)容器運(yùn)行一個(gè)應(yīng)用程序或進(jìn)程,這樣就形成了一個(gè)分布式的應(yīng)用程序模型

       使用docker,開發(fā)人員只需要關(guān)心容器中運(yùn)行的應(yīng)用程序,而運(yùn)維人員只需要關(guān)心如何管理容器。

       總體來(lái)講,docker在開發(fā)和運(yùn)維過程中,具有如下優(yōu)勢(shì):

1、更快速的交付和部署

2、更高效的資源利用。docker容器的運(yùn)行不需要額外的虛擬機(jī)管理程序(VMM,以及Hypervisor)支持,它是內(nèi)核級(jí)的虛擬化,可以實(shí)現(xiàn)更高的性能,同時(shí)對(duì)資源的需求很低

3、更輕松的遷移和擴(kuò)展

4、更簡(jiǎn)單的更新管理。使用dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作,并且所有修改都以增量的方式進(jìn)行分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的容器管理。

到此,關(guān)于“docker與傳統(tǒng)虛擬化的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI