Docker類似虛擬機的概念,但是與虛擬化技術(shù)有幾點不同,如下:
(推薦學(xué)習(xí):docker教程)
1、虛擬化技術(shù)依賴物理CPU和內(nèi)存,是硬件級別的;而docker構(gòu)建在操作系統(tǒng)上,利用操作系統(tǒng)的containerization技術(shù),所以docker甚至可以在虛擬機上運行;
2、虛擬化系統(tǒng)一般都是指操作系統(tǒng)鏡像,比較復(fù)雜,稱為“系統(tǒng)”;而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應(yīng)用,比如部署一個redis、一個memcached;
3、傳統(tǒng)的虛擬化技術(shù)使用快照來保存狀態(tài);而docker在保存狀態(tài)上不僅更為輕便和低成本,而且引入了類似源代碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低;
4、傳統(tǒng)的虛擬化技術(shù)在構(gòu)建系統(tǒng)的時候較為復(fù)雜,需要大量的人力;而docker可以通過Dockfile來構(gòu)建整個容器,重啟和構(gòu)建速度很快。更重要的是Dockfile可以手動編寫,這樣應(yīng)用程序開發(fā)人員可以通過發(fā)布Dockfile來指導(dǎo)系統(tǒng)環(huán)境和依賴,這樣對于持續(xù)交付十分有利;
5、Dockerfile可以基于已經(jīng)構(gòu)建好的容器鏡像,創(chuàng)建新容器。Dockerfile可以通過社區(qū)分享和下載,有利于該技術(shù)的推廣。
Docker會像一個可移植的容器引擎那樣工作。它把應(yīng)用程序及所有程序的依賴環(huán)境打包到一個虛擬容器中,這個虛擬容器可以運行在任何一種 Linux服務(wù)器上。這大大地提高了程序運行的靈活性和可移植性,無論需不需要許可、是在公共云還是私密云、是不是裸機環(huán)境等等。