Docker 在開發、測試與後端平台服務的使用

 

Docker 在開發、測試與後端平台服務的使用

這篇文章主要說明Docker是什麼? 解決什麼問題?

為什麼 Docker 成為一個火紅的技術? Docker 將如何幫助軟體開發與測試的環境?

Docker 如何幫助後端平台環境的執行?

 

 

Docker要解決什麼問題?

Docker 要解決的就是讓應用程式的執行可以不受到環境的影響,到處都可以執行。

沒有Docker 之前,

那麼我們透過 VM (VMWare or VirtualBox),將應用程式安裝在 VM中,該VM Image 不管到任何環境,只要有VMPlayer or VirtualBox 還是可以執行。

Docker 出現後,

我們透過 Docker Engine,將應用程式打包變成 Image ,該Docker Image 不管道任何環境,只要有 Docker Engine 都可以執行。

 

那麼到Docker and Virtual Machine 底差在哪裡?

差別在於 VM Image 是包含整個作業系統 + 應用程式 + 環境設定。因此整個 VM Image size 通常很大。

這樣的 VM Image Size 如果應用程式有一點點修改,整個Image 要重新佈署是很麻煩的。

Docker的 Image 只有包含“少許會共用到的作業系統library” + 應用程式 + 環境設定

主要 Docker Image 與 VM Image 差異在於作業系統的大小

VM Image 需要完整的作業系統。而 Docker Image 僅僅會包含少許必要的作業系統程式庫。

因此,Docker Image 通常只有 200~300 MB。而VM Image 通常是 1G~2G。

 

 

Docker is Application

另外一個Docker 與 VM 最大的差異是 Docker 是應用程式而不是作業系統。

當Docker 執行的時候其實是一個應用程式。只是執行時擁有自己的執行環境,讓我們操作起來像是一個虛擬的作業系統。

Docker Image 啟動執行之後稱為 Docker Container,Docker Container 透過 Docker Engine 與作業系統溝通

每一個run-time的 Docker Container都是一個獨立的應用程式。

每一個 Docker container 都有自己的 process tree, file systems, networking 等。

 

Docker Hub

什麼是Docker Hub呢?  https://registry.hub.docker.com/

Docker Hub 提供許多 Docker images 。可以想成是 Docker Images 的集散地。上面有各式各樣的 Docker Images 可供使用。

Docker Hub 就像是Docker Images的Google,在上面可以找到你所需要的環境 Docker Images。

Registry or Repositories 就是存放這些 Docker Images的儲存體。

使用情境

在軟體開發或是後端平台的維運有幾個情境可以使用 Docker

  • 後端平台有些服務要執行。以往一個服務可能就需要用一個VM。之後一個服務可以執行一個 Docker Container。
  • 開發或是測試的環境。因為library 或是版本的關係需要準備多個VM環境。之後只要個別準備 Docker Container。例如 Docker Container 1 執行 MySQL 5.1。Container 2 執行 MySQL 5.2
  • 開發環境與執行環境一致。常常會遇到開發測試環境都是 ok 的。但是當應用程式佈署到雲端線上環境的時候卻有問題。Docker 避免因為環境造成的問題。

參考資料

https://github.com/wsargent/docker-cheat-sheet
http://blog.flux7.com/blogs/docker/docker-tutorial-series-part-1-an-introduction
https://docs.docker.com/reference/commandline/cli/

Leave a Reply

Your email address will not be published. Required fields are marked *