為何要用 Docker

因為工作內容比較偏向程式開發這塊,當初接觸 Docker 也是很不能了解這跟一般的虛擬機器差在哪裡,就程式部署上去就好,幹嘛那麼麻煩?仔細回想過去一些覺得很麻煩的問題,答案就呼之欲出了!

  • 想要玩個新技術,但要先裝環境和函式庫,都弄好半天又過去了,還沒玩到新技術心就涼了。
  • 上述環境在公司弄好了,回家也想要玩,又要再弄一次。
  • 上述環境不小心裝壞了,比如說 mac 上同時裝 python 2 和 python 3,搞到自己原本的環境都爛了。
  • 整個專案要在自己的電腦,測試環境跑過,在上正式環境,部署之前把環境都弄成一模一樣就飽了。
  • 安裝時都有乖乖寫安裝手冊,過了半年要裝新的環境,卻發現半年前的函式庫抓不到了。
  • 設備移機...

以上問題只要使用 VM 就可以解決了,做好第一次安裝苦工,做成映像檔,以後就是利用映像檔複製出新的 VM。

那為什麼要用 Vagrant,因為第一次安裝用 VM 還是要走一次安裝流程(找 ubuntu.iso > 安裝 > 設定),更多的時候我只是要一個純命令列的 linux 環境再加個 SDK 和 Framework,透過 Vagrant 你可以在 http://www.vagrantbox.es/ 上找到別人做好的環境,不到三分鐘就可以做你真正想要做的事情,而不是一直在裝環境。

那為什麼要用 Docker,相較於 Vagrant 實際上是建立在 VMware / VirtualBox 上的虛擬化工具,Docker 是屬於作業系統層級的虛擬化,白話就是 Docker 更加輕量化的虛擬化工具,開啟速度快,吃的資源少(一台主機能開更多個 Docker 產生的虛擬機器),而且實際用起來跟 Vagrant 一樣好用。

個人不負責任白話解釋:
  • VMware / VirtualBox:第一次安裝還是要花時間,但裝完至少匯出映像檔可以重複利用。
  • Vagrant:用官方/別人分享的映像檔快速安裝環境,實際上還是會利用 VMware / VirtualBox 建立新的 VM。
  • Docker:用官方/別人分享的映像檔快速安裝環境,而且更快,更小。不用安裝 VMware / VirtualBox。
以下圖來舉例,若我突然要用 Tomcat 來寫 Java Web 專案,直接先找別人做好的 Docker 映像檔(ubuntu + JAVA SDK + tomcat),利用映像檔產生 Docker 容器(想成是一個 VM 即可),你可以連進 Docker 容器就像用 SSH 一樣進去下指令,透過 tomcat 網頁部署 jar 檔,開發到最後還能把整個 Docker 容器再做成一個新的映像檔,其他人只要有安裝 Docker,就能馬上在自己的電腦上把環境包含你寫的 Java Web 專案跑起來!超級方便!

Docker 應用場景

接下來會試著安裝自己的 Docker Registry(想成自己的 GitHub),模擬企業內部會採用的使用模式,RD 把應用程式跟環境包成映像檔上傳至 Registry,測試/部署人員直接在 Docker Registry 下載映像檔,複製出一樣的環境。

0 則回應: