一吟榴、虛擬機
虛擬機思想就是可以把一臺計算機分隔成若干臺機器使用
所謂虛擬機(Virtual Machine)指通過軟件模擬的具有完整硬件系統(tǒng)功能、并可以運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)囊扳。虛擬機就是相對于傳統(tǒng)計算機而言的一個計算機概念吩翻,一個非實體的計算機,但具有所有傳統(tǒng)計算機的功能锥咸。
虛擬機系統(tǒng)可以通過生成現(xiàn)有操作系統(tǒng)的全新虛擬鏡像(比如iso)仿野。對于windows操作系統(tǒng)而言,它具有真實windows系統(tǒng)完全一樣的功能她君。對于linux/unix系統(tǒng)脚作,也是如此,一個linux(unix系統(tǒng))被分隔為多個相對獨立的小系統(tǒng)(麻雀雖小卻五臟俱全)缔刹。進入虛擬系統(tǒng)后球涛,所有操作都是在這個全新的獨立的虛擬系統(tǒng)里面進行,可以獨立安裝運行軟件校镐,保存數(shù)據(jù)亿扁,甚至擁有自己的獨立桌面互動操作,卻不會對真正的宿主系統(tǒng)產(chǎn)生任何影響 鸟廓,更為方便的是這種系統(tǒng)具有能夠在宿主系統(tǒng)與虛擬鏡像之間靈活切換从祝。虛擬系統(tǒng)和傳統(tǒng)的虛擬機(Parallels Desktop、Vmware引谜、VirtualBox牍陌、Virtual pc、kvm)存在不同员咽。
具體就在于:虛擬系統(tǒng)不會大量降低電腦的性能毒涧,啟動虛擬系統(tǒng)不需要像啟動windows/linux系統(tǒng)那樣耗費時間,運行程序更加方便快捷贝室;虛擬系統(tǒng)只能模擬和現(xiàn)有操作系統(tǒng)相同的環(huán)境契讲,而虛擬機則可以模擬出其他種類的操作系統(tǒng)(比如在筆者的宿主ubuntu下用virtualbox來運行windowsx也不是沒有的仿吞,虛擬機計算需要多了一個虛擬機與宿主機模擬底層之間的交換層,所以在應(yīng)用程序**運行速度上比虛擬系統(tǒng)慢得多捡偏。但是值得相信的是唤冈,現(xiàn)在的硬件越來越快,應(yīng)該可以不考慮這占損失就好了银伟,尤其還會有未來的量子計算機產(chǎn)生你虹。
二、容器技術(shù)
一種比傳統(tǒng)虛擬機更優(yōu)秀的計算資源利用管理技術(shù)
有了虛擬機vm的長期網(wǎng)紅枣申,容器技術(shù)很快就被程序高手們挖掘出來售葡。Cgroup被引入linux系統(tǒng)的內(nèi)核體系,隨之基于cgroup的應(yīng)用就多了起來忠藤!也許很多朋友一開始只希望用這個cgroup來實行操作系統(tǒng)層面資源隔離挟伙,從而形成linux系統(tǒng)下多用戶使用中的資源安全∧:ⅲ可是GO語言出來之后尖阔,喜歡嘗鮮的程序員,用GO寫出了docker這大型工具榨咐。GO的新生面孔與Docker強大未來前途介却,一下子把高密度運算帶到了一個新高度。
虛擬化技術(shù)的長期使用块茁,已經(jīng)成為一種被大家廣泛認可的服務(wù)器資源共享方式齿坷,它可以在按需構(gòu)建操作系統(tǒng)實例的過程當(dāng)中為系統(tǒng)管理員提供極大的靈活性。這樣的特點為滿足了投資者縮減成本的需求数焊,也滿足了管理人員的希望永淌。但這種是基于
虛擬化技術(shù)的。hypervisor作為一個中間件充當(dāng)一種運行在物理服務(wù)器和操作系統(tǒng)之間的中間軟件層佩耳,其根本任務(wù)就在于允許多個操作系統(tǒng)和應(yīng)用程序共享一套基礎(chǔ)物理硬件(比如硬盤遂蛀、內(nèi)存、cpu干厚、通訊總線等)李滴,它可以協(xié)調(diào)計算任務(wù)訪問服務(wù)器上的所有物理設(shè)備和虛擬機,因此有時間人們又叫它是虛擬機監(jiān)視(控)器(Virtual Machine Monitor)蛮瞄。Hypervisor是所有虛擬化技術(shù)的核心所坯,非中斷地支持多工作、多負載遷移的能力是Hypervisor的基本功能裕坊。每當(dāng)服務(wù)器啟動執(zhí)行Hypervisor這個進程時包竹,它會給每一臺虛擬機分配適量的內(nèi)存、CPU籍凝、網(wǎng)絡(luò)和磁盤周瞎,并加載所有虛擬機的客戶操作系統(tǒng)。
hypervisor仍然存在一些性能和資源使用效率方面的小問題饵蒂,在大運算量有時候就成了一種瓶頸與制約声诸,因此基于容器(Container)的新型虛擬化技術(shù)成為真實的新晉網(wǎng)紅。這個網(wǎng)紅代表就是Docker退盯。
目前Docker的使用已經(jīng)非常普遍彼乌,特別在一線的互聯(lián)網(wǎng)公司。使用Docker技術(shù)的優(yōu)勢可以幫助企業(yè)快速地擴展服務(wù)渊迁,從而實現(xiàn)彈性部署計算業(yè)務(wù)的能力慰照。在云服務(wù)理念興起之后,Docker的使用場景和范圍進一步得到發(fā)展琉朽,如今微服務(wù)架構(gòu)又流行起來毒租,微服務(wù)+Docker再次成為完美組合,快速交付箱叁、快速布署墅垮、簡捷運維部署一股腦兒就落地了。
名詞解釋
cgroups耕漱,其名稱源自控制組群(control groups)的簡寫算色,是Linux內(nèi)核的一個功能,用來限制螟够、控制與分離一個進程組的資源(如CPU灾梦、內(nèi)存、磁盤輸入輸出等)妓笙。
這個項目最早是由Google的工程師(主要是Paul Menage和Rohit Seth)在2006年發(fā)起若河,最早的名稱為進程容器(process containers)。在2007年時给郊,因為在Linux內(nèi)核中牡肉,容器(container)這個名詞有許多不同的意義,為避免混亂淆九,被重命名為cgroup统锤,并且被合并到2.6.24版的內(nèi)核中去。自那以后炭庙,又添加了很多功能饲窿。
Hypervisor, 一種運行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層焕蹄,可允許多個操作系統(tǒng)和應(yīng)用共享硬件逾雄。也可叫做VMM( virtual machine monitor )虛擬機監(jiān)控器
細說Docker。
Docker 是世界領(lǐng)先的軟件容器平臺。開發(fā)人員利用 Docker 消除了協(xié)作編碼時“只在我的機器上可正常工作”的問題鸦泳。對于運維人員而言银锻,利用 Docker 可以在隔離容器中并行運行和管理應(yīng)用,獲得更好的計算密度做鹰。企業(yè)利用 Docker 可以構(gòu)建敏捷的軟件交付方式击纬,以高速度、高安全性钾麸、高可靠性地為 Linux 和 Windows Server 應(yīng)用發(fā)布新功能更振,跨平臺一氣通吃。
Docker 屬于 Linux 容器的一種封裝饭尝,成套地提供了簡單易用的容器使用接口肯腕。它是事實上目前最流行的 Linux 容器方案。Docker 將應(yīng)用程序以及該程序運行的依賴計算環(huán)境钥平,打包在了一個鏡像文件之中实撒。只要運行這個鏡像文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就如同在真實的物理機上運行一樣雷激。
另外的優(yōu)勢就是,Docker 的接口相當(dāng)簡單肴甸,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器囚巴。利用容器接口還可以進行版本管理原在、復(fù)制、分享彤叉、修改庶柿,就像管理普通的代碼一樣方便快捷,當(dāng)然前提是你必須學(xué)好docker的所有知識秽浇。
三浮庐、為什么要優(yōu)先使用Docker,而不是虛擬機呢
1柬焕、在性能上講
容器除了運行其中應(yīng)用外审残,基本不消耗額外的系統(tǒng)資源。就連虛擬機中 hypervisor 支持也節(jié)省了斑举。因此使得應(yīng)用的性能進一步提高搅轿,同時系統(tǒng)的開銷盡量小。傳統(tǒng)虛擬機方式運行 10 個不同的應(yīng)用就要起 10 個虛擬機富玷,而Docker 只需要啟動 10 個安全隔離的應(yīng)用就可以了璧坟。
2既穆、更快速的交付和部署
對開發(fā)和運維(devop)人員來說,最希望的就是一次創(chuàng)建或配置雀鹃,可以在任意地方正常運行幻工。
開發(fā)者可以使用一個標(biāo)準(zhǔn)的鏡像來構(gòu)建一套開發(fā)容器,開發(fā)完成之后褐澎,運維人員可以直接使用這個容器來部署代碼会钝。 Docker 可以快速創(chuàng)建容器伐蒋,快速迭代應(yīng)用程序工三,并讓整個過程全程可見先鱼,使團隊中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的掸读。 Docker 容器輕量級的,快速是原生特性。容器的啟動時間秒級水平,大量地節(jié)約了開發(fā)饵逐、測試、部署時間薄声。
3婴程、更高效的虛擬化
虛擬機基于硬件層面實現(xiàn)虛擬化,需要額外的虛擬機管理應(yīng)用和虛擬操作系統(tǒng)層
Docker容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化直接復(fù)制宿主主機的操作系統(tǒng),更輕量級,更高效
4蒸绩、更輕松的遷移和擴展
Docker 容器幾乎可以在任意的平臺上運行,包括物理機步藕、虛擬機漂彤、公有云立润、私有云拷肌、個人電腦、服務(wù)器等等。 這種兼容性可以讓用戶“一次建設(shè)跑遍全天下成為事實”仲器,最終簡的方法就是把一個應(yīng)用程序從一個平臺直接復(fù)制遷移到另外一處即可 。
5仰冠、維護更簡單
使用 Docker乏冀,只需要小小的修改,就可以替代以往大量的更新工作洋只。所有的修改都以增量的方式被分發(fā)和更新辆沦,從而實現(xiàn)自動化并且高效的管理昼捍。
四、Docker 與VM的效率肢扯。
VM是一個運行在宿主機之上的完整的操作系統(tǒng)妒茬,VM運行自身操作系統(tǒng)會占用較多的CPU、內(nèi)存蔚晨、硬盤資源乍钻。Docker不同于VM,只包含應(yīng)用程序以及依賴庫铭腕,基于libcontainer運行在宿主機上银择,并處于一個隔離的環(huán)境中,這使得Docker更加輕量高效谨履,啟動容器只需幾秒鐘之內(nèi)完成欢摄。由于Docker輕量、資源占用少笋粟,使得Docker可以輕易的應(yīng)用到構(gòu)建標(biāo)準(zhǔn)化的應(yīng)用中。雖然Docker目前還不夠完善析蝴,比如隔離效果不如VM害捕,還需要共享宿主機操作系統(tǒng)的一些基礎(chǔ)庫等(這可能與還不夠完善GO-lang有關(guān));網(wǎng)絡(luò)配置功能相對簡單闷畸,主要以橋接方式為主尝盼。
docker容器與VM間的不同
Docker 在容器的基礎(chǔ)上,進行了進一步的封裝佑菩,從文件系統(tǒng)盾沫、網(wǎng)絡(luò)互聯(lián)到進程隔離等等,極大的簡化了容器的創(chuàng)建和維護殿漠。使得 Docker 技術(shù)比虛擬機技術(shù)更為輕便赴精、快捷。
相對傳統(tǒng)的虛擬化方式绞幌,作為一種新興的虛擬化方式蕾哟,Docker 跟傳統(tǒng)的虛擬化方式具有眾多優(yōu)勢。Docker 容器的啟動可以在秒級實現(xiàn)莲蜘;Docker 對系統(tǒng)資源的利用率很高谭确,一臺主機上可以同時運行數(shù)千個 Docker 容器。
對比傳統(tǒng)虛擬機總結(jié)
特性 | 容器 | 虛擬機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬盤使用 | 一般為 MB
|
一般為 GB
|
性能 | 接近原生 | 弱于 |
系統(tǒng)支持量 | 單機支持上千個容器 | 一般幾十個 |