相信我們很多人都使用多VM(Virtual Machine),也就是虛擬機,簡單的來說Docker就是類是于VM的容器,但Docker要輕量得多,VM(Virtual Machine)是重量級的;VM是硬件級別的虛擬化技術,而Docker只是內核級別的虛擬化技術,Docker是開源的容器引擎,就拿Docker官方的兩張圖來說:
VM(Virtual Machine):第一張是VM的圖;VM其實就是一個虛擬的硬件環境,在使用VM的時候我們都需要在VM中裝一個完整的OS然后再在OS中部署我們的application,圖片中的Hypervisor就是VM的核心,它用于虛擬硬件環境,然后可以在Hypervisor之上安裝多個OS;
Docker:第二張就是Docker在于整個結構中的圖,Docker沒有模擬整個硬件環境,它只需要在宿主主機中裝Docker Engine(Docker引擎),然后就可以在Image(鏡像)創建多個Container(容器),各個容器運行環境都是獨立的可以簡單的說每個Container都是一個獨立的OS,每個Container與宿主使用同一個內核,對進程與資源進行了隔離;Docker也不是新技術,Docker只是在LXC(linux Container)的基礎上進行封裝發展起來的;
光從這兩張圖就可以看出VM與Docker的區別了,相比Docker,VM是多么的輕量;單個程序很多時候不能夠完全的使用單臺計算機的硬件資源,這時候VM就出現它能夠在單臺計算機上裝多個OS運行多個程序,但VM上的OS占用資源過多;而Docker與主機共享內核,可以運行更多的Container,Docker比VM更能榨干計算機的硬件資源;
VM(Virtual Machine)
Docker
關于開發
在之前程序的部署是個麻煩的環節,開發者寫好程序之后要進行測試就需要在測試機裝程序遠行的環境,到測試好之后又要在正式機上裝完全一樣的程序運行環境,當測試機、或正式機上的運行環境與開發的環境有一點不一樣程序就會出現問題,而使用了Docker之后就不會出現在測試機配置運行環境、在正式機遠行環境這些問題,只需要開發者配置好一個Image,然后再測試機、正式機上下載Image,然后在Container中運行程序即可,省去了來回配置運行環境的問題;
關于程序分發
現在我們每當要使用一個程序或框架的時候都是把軟件下下來然后各種折騰程序的遠行環境程序才能跑起來,當使用了Docker后就可以把程序放在Image中,使用者只需要把Image下下來即可,不需要去折騰各種環境各種依賴,Docker決解了程序依賴的問題,它把依賴都打包進了Image中;
Docker為CI(Continuous integration)、MicroService的使用提供了很好的使用環境,企業內部的私有云也很多使用了Docker;
Docker發展短短兩三年時間,Docker得到了各大云服務廠商的支持現在亞馬遜、微軟、谷歌等等的云服務都有支持了Docker;Docker不再只支持Linunx,微軟對Docker可以說是很看好的,最新的Windows Server將原生的支持Docker;CoreOS 也發布了與Docker類是的容器引擎;
由于Docker才出現沒幾年所以Docker周邊的工具還是健全,管理過多的容器還是很麻煩的,但Docker現在的生態環境很活躍相信這些只是時間問題;
文章首發地址:Solinxhttp://www.solinx.co/archives/372
新聞熱點
疑難解答