首頁  >  問答  >  主體

Docker和其他VM技术有什么不同?

最近发现Docker很火啊,好像所有的服务都可以放到Docker里面来跑。貌似Docker也分很多不同的系统,Docker也是一种虚拟机(VM)技术吗?我看Docker的镜像都很小,是不是一种简化的虚拟机呢?

黄舟黄舟2761 天前840

全部回覆(5)我來回復

  • 阿神

    阿神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目前發展很迅速,相信特性的增強會很快。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-21 10:57:51

    Docker是一種應用容器,你可以把它理解為集裝箱,就是把包括應用和應用的依賴在內的整個環境都打包在一起,這樣安裝部署也方便,同時每個開發人員使用的是統一的版本,不會因為依賴版本不同而踩到坑,也不用費心自己維護版本。

    64位Linux上,Docker沒有用虛擬機,所以效能很好。在64位元的Linux系統以外的系統上(包括Windows,Mac OS X),Docker利用了虛擬機器技術。

    回覆
    0
  • 黄舟

    黄舟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那可費勁了

    回覆
    0
  • PHPz

    PHPz2017-04-21 10:57:51

    以前看到的一片文章,很詳細。
    http://tiewei.github.io/cloud/Docker-Getting-Start/

    回覆
    0
  • 阿神

    阿神2017-04-21 10:57:51

    Docker 是基於 LXC 的,它屬於進程級的虛擬化方案,從宿主的機器看,每個運行的 Docker 都是一個進程。

    Xen/OpenVZ 這類是系統級的虛擬化方案。從宿主的機器看,允許都是一個一個虛擬機器。

    這裡有更詳細的比較:http://goldmann.fedorapeople.org/tmp/docker-preso/#/5

    回覆
    0
  • 取消回覆