2017年5月3日 星期三

Docker 學習筆記 - Part 1



OS:macOS Sierra

Docker for Mac : Docker for Mac is a complete development environment deeply integrated with the MacOS Hypervisor framework, networking and filesystem. 


get started with Docker :  

事前準備:

請先了解何謂Docker, 你要用Docker 做什麼,然後再開始學習會比較有意義。
當然,最好先有這些基礎:

  • IP address and Ports
  • Virtual Machine
  • 編輯 config file的能力
  • 基本對 程式碼的相依性的與建立程序 的了解
  • 電腦的資源用語,如CPU%,RAM在byte量的使用等等。

Containers的基本介紹:

image (俗稱印象檔)是個輕量化的,獨立的,可執行的套件,其包含了一支小程式所需執行的所有相關程式,包括程式碼,執行序,函式庫,環境變數和設定檔等等。
container 則是一個image 的執行實體,也就是Image 放到記憶體裡實際執行,而不是磁碟裡的檔案而己。而且它是在與主體主機環境完全隔離的環境下執行,只可以在有設定的情況下可以存取主體主機的檔案和port 位。

Container 執行基於主體主機核心(kernel) 的原生應用程式。因此它的效能會比在虛擬主機上的應用程式來得好。Container 可以取得原生的存取功能,而不用透過虛擬主機,每個執行的程式也有其程式序,而不用消耗多餘的資源。

Container 與 Virtual Machine

Virtual Machine 的架構

Virtual machine stack example





















因為VM要執行一個Guest OS, 所以這個Guest OS 相對的消耗相當多的硬體資源,進而造成浪費,在它上面執行的app, 也會因為guest OS 裝了許多用不到的套件,造成更大的浪費。

Container 的架構
Container stack example





















Container 可以分享單一個 kernel, 在image 內只需存放上面App 所需的相關套件即可,而不需在host OS上還要存一份相關套件。這些程序在執行上就像在主體主機上執行一樣,也讓你用 docker ps 的指令,就像你在主體主機(linux)上,打 ps 指令一樣。再者,因為container 已包含 app 所需相依套件,與主體主機也不存在套件相關性。所以contain 化的程式,是可以 "runs anywhere"。

當你安裝好之後,便可以下 docker run hello-world,理論上,它會先在你的主機內找這支image, 如果不存在,它會去docker hub 找,找到後,便會去執行。

你也可以看一下你安裝的docker 版本:
 ~/ docker --version
Docker version 17.03.1-ce, build c6d412e


沒有留言:

張貼留言