正面回答這個(gè)問(wèn)題之前,先看看虛擬機(jī)和Dcoker的區(qū)別。
虛擬機(jī):在一臺(tái)物理機(jī)器上,利用虛擬化技術(shù),虛擬出來(lái)多個(gè)操作系統(tǒng),每個(gè)操作系統(tǒng)之間是隔離的。舉例說(shuō)明:電腦上安裝操作系統(tǒng),比如我們安裝了win10的操作系統(tǒng);再往上安裝虛擬機(jī)軟件,比如我們常用的VirtualBox、VMWare,它們的作用是模擬計(jì)算機(jī)硬件;這樣虛擬機(jī)模擬出來(lái)的操作系統(tǒng)了;在虛擬的操作系統(tǒng)中,安裝所需的軟件、組件等。比如我們?cè)谔摂M操作系統(tǒng)中安裝JDK、Tomcat等;最后就是具體的應(yīng)用了,也就是把應(yīng)用部署到Tomcat中。
- Docker:官方解釋是開(kāi)源的應(yīng)用容器引擎。用人話(huà)解釋一下:依然需要現(xiàn)在電腦上安裝操作系統(tǒng),然后安裝Docker容器的管理器,到了這一步,不需要自己安裝JDK和Tomcat,而是由開(kāi)發(fā)人員將素有的依賴(lài)和應(yīng)用都被打包成了Docker鏡像。例如,JDK、Tomcat、應(yīng)用都被打包在了一起,運(yùn)行在Docker容器里,容器和容器間是隔離的。
從兩者的架構(gòu)圖上看,虛擬機(jī)是在硬件級(jí)別進(jìn)行虛擬化,模擬硬件搭建操作系統(tǒng);而Docker是在操作系統(tǒng)的層面虛擬化,復(fù)用操作系統(tǒng),運(yùn)行Docker容器。
Docker的速度很快,秒級(jí),而虛擬機(jī)的速度通常要按分鐘計(jì)算。
Docker所用的資源更少,性能更高。同樣一個(gè)物理機(jī)器,Docker運(yùn)行的鏡像數(shù)量遠(yuǎn)多于虛擬機(jī)的數(shù)量。
虛擬機(jī)實(shí)現(xiàn)了操作系統(tǒng)之間的隔離,Docker算是進(jìn)程之間的隔離,虛擬機(jī)隔離級(jí)別更高、安全性方面也更強(qiáng)。
- Docker是可以用于生產(chǎn)環(huán)境的;但是Docker是有學(xué)習(xí)成本的,前期要踩不少的坑;
- 如果沒(méi)有容器集群管理工具的話(huà),只用Docker的話(huà),沒(méi)有太大必要(人肉維護(hù)?開(kāi)發(fā)和運(yùn)維都會(huì)死的);
- 虛擬機(jī)和Docker各有優(yōu)勢(shì),很多企業(yè)都采用物理機(jī)上做虛擬機(jī),虛擬機(jī)中跑Docker的方式。
- 總之,要說(shuō)Docker代替虛擬機(jī)還為時(shí)過(guò)早,至少短期內(nèi)不會(huì);