Docker初體驗(一) - Docker Vs VM

最近公司在創建一個內部使用的小應用,嘗試使用了Docker這個已經被熱炒很久的Devops神器, 部署了Jenkins,應用和數據庫的服務,體會到了一處打包各處運行的便利。剛開始使用Docker, 有一種深深的感覺,它是一個輕量的虛擬機,再比較一番,它還是跟虛擬機有本質的區別。

Docker并不是輕量的虛擬機

因為Docker和虛擬機都為應用提供隔離的運行環境,并且由于Docker的易用性,很容易把它看成是輕量的虛擬機。但是它們在基礎架構上是完全不同的。

要說明這個,我找了一個例子。我們可以把虛擬機看成是獨棟別墅,作為別墅,它必須有自己的通風,供熱和電力系統等基礎設施,同時還有必須的臥室,客廳,洗手間和廚房等。如果覺得客廳房間不夠,那么你不能共享這些基礎設施,添加一個新的房間,而是要重新買一個房間足夠的別墅。相比而言,docker容器更像是高層住房中的公寓,它們共享整個建筑的基礎設施,可以在一棟住宅中擁有各種不同的戶型(運行各種不同鏡像的容器)。

從上面的比較中我們可以看到,它們雖然都是為應用提供獨立的運行環境,但是他們的構建理念是完全不同的,虛擬機是要在硬件上隔離出完整操作系統的方方面面,但是docker容器是共享操作系統基礎設施,并在docker主機上運行打包好運行環境的應用。所以docker并不是一個虛擬機技術,而是一個應用交付技術。在虛擬機的世界中,抽象的單位是一個包含應用代碼和依賴資源的虛擬機,它打包應用在物理主機上運行依賴的所有資源,生成一個可以在各種主機上運行的二進制產品。在Docker的世界中,抽象的單位是應用,更準確的說是一個服務,一般一個應用都是由多個服務組成。基于Docker容器,我們的應用能更容易的被拆分成細粒度的組件,這種技術會改變我們應用架構的方式。

Docker容器的備份

我們怎么備份Docker容器呢?其實我們并不需要備份容器。在使用Docker時,應用數據并不在保存在容器中,它存儲在位于運行docker的服務器上的命名卷(volume)中[一塊物理存儲空間], 卷可以在不同的容器間共享,我們只需要備份這些卷,并不需要備份容器。所以理想情況下,容器是無狀態并且不可修改的。如果我們想更新應用,需要做的是更新Docker鏡像,同時基于新的鏡像重新創建容器,創建容器只需要花幾秒鐘。

最后

通過以上面的比對,我們可以發現Docker和VM是針對解決不同問題而提出的技術,一個是打包應用運行環境在各種操作系統上運行,一個是打包了部署應用的整個操作系統,并運行在各種服務器上。他們不僅不是一個有你沒我的替代關系,而是互相結合可以發揮更大威力的組合。有了Docker,它將改變部署應用的方式,可以方便的配置出不同的運行環境,隨著配置應用運行環境的成本降低,我們可以將應用拆解成粒度更小的服務,改變我們設計系統的方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Docker — 云時代的程序分發方式 要說最近一年云計算業界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,636評論 15 147
  • 寫這篇文章主要是為了今后畢業論文素材上的整理,同時對docker進行鞏固溫習。大綱: docker簡介docker...
    胡圖仙人閱讀 7,500評論 2 96
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,544評論 0 120
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 曾經有一位朋友告訴我,她單位一對夫妻感情不和,但不離婚,各找各的情人,各玩各的。當初聽了這話驚訝的下巴殼都要掉了,...
    花落無言之花開無語閱讀 472評論 0 0