十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容主要講解“虛擬機(jī)與Docker有什么區(qū)別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“虛擬機(jī)與Docker有什么區(qū)別”吧!
10年積累的做網(wǎng)站、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有邢臺免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
譯者按:各種虛擬機(jī)技術(shù)開啟了云計算時代;而 Docker,作為下一代虛擬化技術(shù),正在改變我們開發(fā)、測試、部署應(yīng)用的方式。那虛擬機(jī)與Docker究竟有何不同呢?
為了保證可讀性,本文采用意譯而非直譯。另外,本文版權(quán)歸原作者所有,翻譯僅用于學(xué)習(xí)。
首先,大家需要明確一點(diǎn), Docker容器 不是 虛擬機(jī) 。
2014年,當(dāng)我***次接觸Docker的時候,我把它比做一種輕量級的虛擬機(jī)。這樣做無可厚非,因為Docker最初的成功秘訣,正是它比虛擬機(jī)更節(jié)省內(nèi)存,啟動更快。Docker不停地給大家宣傳,”虛擬機(jī)需要數(shù)分鐘啟動,而Docker容器只需要50毫秒”。
然而, Docker容器 并非 虛擬機(jī) ,我們不妨來比較一下它們。
理解虛擬機(jī)
使用 虛擬機(jī) 運(yùn)行多個相互隔離的應(yīng)用時,如下圖:
從下到上理解上圖:
基礎(chǔ)設(shè)施(Infrastructure) 。它可以是你的 個人電腦 ,數(shù)據(jù)中心的 服務(wù)器 ,或者是 云主機(jī) 。
主操作系統(tǒng)(Host Operating System) 。你的個人電腦之上,運(yùn)行的可能是 MacOS , Windows 或者某個 Linux 發(fā)行版。
虛擬機(jī)管理系統(tǒng)(Hypervisor) 。利用Hypervisor,可以在 主操作系統(tǒng) 之上運(yùn)行多個不同的 從操作系統(tǒng) 。類型1的Hypervisor有支持MacOS的 HyperKit ,支持Windows的 Hyper-V 以及支持Linux的 KVM 。類型2的Hypervisor有VirtualBox和VMWare。
從操作系統(tǒng)(Guest Operating System) 。假設(shè)你需要運(yùn)行3個相互隔離的應(yīng)用,則需要使用Hypervisor啟動3個 從操作系統(tǒng) ,也就是3個 虛擬機(jī) 。這些虛擬機(jī)都非常大,也許有700MB,這就意味著它們將占用2.1GB的磁盤空間。更糟糕的是,它們還會消耗很多CPU和內(nèi)存。
各種依賴 。每一個 從操作系統(tǒng) 都需要安裝許多依賴。如果你的的應(yīng)用需要連接PostgreSQL的話,則需要安裝 libpq-dev ;如果你使用Ruby的話,應(yīng)該需要安裝gems;如果使用其他編程語言,比如Python或者Node.js,都會需要安裝對應(yīng)的依賴庫。
應(yīng)用 。安裝依賴之后,就可以在各個 從操作系統(tǒng) 分別運(yùn)行應(yīng)用了,這樣各個應(yīng)用就是相互隔離的。
理解Docker容器
使用 Docker容器 運(yùn)行多個相互隔離的應(yīng)用時,如下圖:
不難發(fā)現(xiàn),相比于 虛擬機(jī) , Docker 要簡潔很多。因為我們不需要運(yùn)行一個臃腫的 從操作系統(tǒng) 了。
從下到上理解上圖:
基礎(chǔ)設(shè)施(Infrastructure) 。
主操作系統(tǒng)(Host Operating System) 。所有主流的Linux發(fā)行版都可以運(yùn)行Docker。對于MacOS和Windows,也有一些辦法”運(yùn)行”Docker。
Docker守護(hù)進(jìn)程(Docker Daemon) 。Docker守護(hù)進(jìn)程取代了Hypervisor,它是運(yùn)行在操作系統(tǒng)之上的后臺進(jìn)程,負(fù)責(zé)管理Docker容器。
各種依賴 。對于Docker,應(yīng)用的所有依賴都打包在 Docker鏡像 中, Docker容器 是基于 Docker鏡像 創(chuàng)建的。
應(yīng)用 。應(yīng)用的源代碼與它的依賴都打包在 Docker鏡像 中,不同的應(yīng)用需要不同的 Docker鏡像 。不同的應(yīng)用運(yùn)行在不同的 Docker容器 中,它們是相互隔離的。
對比虛擬機(jī)與Docker
Docker守護(hù)進(jìn)程可以直接與 主操作系統(tǒng) 進(jìn)行通信,為各個 Docker容器 分配資源;它還可以將容器與 主操作系統(tǒng) 隔離,并將各個容器互相隔離。 虛擬機(jī) 啟動需要數(shù)分鐘,而 Docker容器 可以在數(shù)毫秒內(nèi)啟動。由于沒有臃腫的 從操作系統(tǒng) ,Docker可以節(jié)省大量的磁盤空間以及其他系統(tǒng)資源。
說了這么多Docker的優(yōu)勢,大家也沒有必要完全否定 虛擬機(jī) 技術(shù),因為兩者有不同的使用場景。 虛擬機(jī) 更擅長于徹底隔離整個運(yùn)行環(huán)境。例如,云服務(wù)提供商通常采用虛擬機(jī)技術(shù)隔離不同的用戶。而 Docker 通常用于隔離不同的應(yīng)用,例如 前端 , 后端 以及 數(shù)據(jù)庫 。
到此,相信大家對“虛擬機(jī)與Docker有什么區(qū)別”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!