來了!即使進公司快半年還是搞不懂的 Docker,剩下幾天來搞懂他一下好了。
Docker
是容器執行階段技術 (Container)
舉例:每台電腦作業環境與系統配備不盡相同,這隻程式在我的電腦跑可能很正常,但到你的電腦上去的時候,結果整組壞光光。因此我們需要設置一個虛擬化的環境,讓程式可以在不同硬體上執行時,都以為自己在同一個環境中執行。
虛擬機器是在系統層上虛擬化,在作業系統(Host OS)上面再裝一個作業系統(Guest OS),然後讓兩個作業系統彼此不會打架的平台; 因為 Guest OS 開啟速度慢,且佔記憶體空間大,因此透過 Container Manager 直接將一個應用程式所需的程式碼、函式庫打包,建立資源控管機制隔離各個容器,並分配 Host OS 上的系統資源。透過容器,應用程式不需要再另外安裝作業系統(Guest OS)也可以執行。
Dockerfile
Dockerfile 是一種簡易的文件檔,裡面包含了建立新映像檔所需的指令。
Image (映像檔)
映像檔是一個模板,能透過映像檔建置不同的容器,包含了開發者需要部署的應用程式、作業系統和編譯環境。可以透過Dockerfile指令撰寫命令構成或是從公開的地方下載已經做好的映像檔來使用。
Container (容器)
容器是映像檔建立出來的實例(Instance),每個容器都是相互隔離、保證安全的平台。映像檔是唯讀(Read Only)的模板,因此容器在運行後映像檔的上層會增加一個能夠修改的讀寫層(Read and Write)。
倉庫 Repository
儲存映像檔的地方,目前官方最大的公開倉庫是 Docker Hub,也可以透過 push, pull 建立自己的倉庫。
圖片來源:https://www.hellosanta.com.tw/knowledge/category-38/post-130
參考文章: