最近发现Docker很火啊,好像所有的服务都可以放到Docker里面来跑。貌似Docker也分很多不同的系统,Docker也是一种虚拟机(VM)技术吗?我看Docker的镜像都很小,是不是一种简化的虚拟机呢?
阿神2017-04-21 10:57:51
docker相對於全虛擬化和半虛擬化而言,是所謂的作業系統層級的輕量級虛擬化技術。傳統的虛擬化技術要產生一個環境的時間非常久,對於docker來說啟動和銷毀都是秒級的,而且它底層依賴的技術lxc(linux container)完全是核心特性,沒有任何中間層開銷,對於資源的利用率極高性能接近物理機。當然由於現在docker依賴lxc,所以你只能在Linux上跑它(現在mac osx也支持,但是也只是用了virtualbox搞了個linux虛擬機啊罷了,相信我,現在在mac上使用它沒有任何意義,即使為了docker開發,我也認為vagrant比較合適,昨天剛嘗試了一個boot2docker這個mac工具,體驗真是不好)。
題主所謂的不同的系統其實是一個docker維護的鏡像,對於lxc來說這個並不需要,但是docker維護了這套鏡像更方便保存應用環境,做到無依賴的環境分發。另外你說的docker映像都很小並不準確,docker的映像大小是應用決定的,你可以讓你的映像保存任意東西,也就是可以是任意大小的。
docker是不是什麼都適合做,目前來看並不是,對於精度要求很高的計費任務來說docker還不合適,但是對於普通的PaaS足夠了,而且docker目前發展很迅速,相信特性的增強會很快。
巴扎黑2017-04-21 10:57:51
Docker是一種應用容器,你可以把它理解為集裝箱,就是把包括應用和應用的依賴在內的整個環境都打包在一起,這樣安裝部署也方便,同時每個開發人員使用的是統一的版本,不會因為依賴版本不同而踩到坑,也不用費心自己維護版本。
64位Linux上,Docker沒有用虛擬機,所以效能很好。在64位元的Linux系統以外的系統上(包括Windows,Mac OS X),Docker利用了虛擬機器技術。
黄舟2017-04-21 10:57:51
docker做到了PAAS即平台即服務,docker在64位元linux上使用的是lxc核心虛擬化也就是輕量級的虛擬化,與VM相比不需要對硬體進行模擬就可以共享跟主機一樣的操作系統,並且有AUFS和lXC來虛擬化,加入一個ubuntu的鏡像是265MB,你要再VM主機新建1000個就需要265000MB內存,但是docker共享容量也就需需要256多一點,如果你在linux上跑VMware相信你會看主機記憶體的消耗是比較大的,一個亞馬遜EC2 512MB內存單核的雲主機開5個docker無壓力,你要是跑5個vmware那可費勁了
阿神2017-04-21 10:57:51
Docker 是基於 LXC 的,它屬於進程級的虛擬化方案,從宿主的機器看,每個運行的 Docker 都是一個進程。
Xen/OpenVZ 這類是系統級的虛擬化方案。從宿主的機器看,允許都是一個一個虛擬機器。
這裡有更詳細的比較:http://goldmann.fedorapeople.org/tmp/docker-preso/#/5