Docker 簡介 & 學習筆記— 1

Steven Lu
Jun 1, 2023

對於許多已經有過開發經驗 or 運維經驗的工程師來說, Docker是一個極不陌生的名詞,也是軟體開發裡加速開發週期降低部署成本的重要工具之一。

Docker 示意圖

它是屬於開源容器引擎,主要負責自動化部署應用程序相依性套件(Dependency package)的打包和運行。

其最著名的特性就是虛擬容器化。顧名思義,可以讓應用程序和其相關的依賴項能夠在隔離環境中運行,不影響到本地端軟體專案不同程式時所面臨的依賴性衝突問題。

每個容器都包含應用程序和其相關的依賴項,並且可以獨立地運行在任何支持 Docker 的系統中,而不需要進行系統層面的設置或修改。

Docker 架構圖

以上為Docker 架構圖:

首先,從左側開始會由用戶這邊開始執行以下指令

docker run

or

docker build

or

docker pull

執行完指令就會觸發用戶要求執行docker 以及建置容器等API請求,而Docker Daemon也會接受到指令後協助處理並產生映像檔。之所以在Docker Daemon跟Docker Registry多劃一條線的原因在於用戶在執行docker pull時,這個動作會請求Docker Daemon 把Docker公有庫上已經存在的映像檔給下載下來至本地或者是開發環境上。

另外,這邊也說明一下關於Docker的3個核心概念,也就是:

  1. 映像檔 (Image):是用於打包應用程序和其相關的依賴項的模板。例如:如果在使用Java 或者是Python等程式語言時,可安裝指定openjdk版本 或者是把頻繁使用之Python套件版本收納至同目錄層requirements.txt裡面, 以便安裝.
  2. 容器 (Container):是從映像檔創建的運行實例。每個容器都是相互隔離的,並且可以獨立地運行和管理。
  3. 倉庫 (Registry):它可以是公有,也可以是私有倉庫。其倉庫儲藏豐富的映像檔,給予開發者們極大的便利性使用其配置好的公共映像檔來進行開發。Docker Hub 就是其中相當著名的公有庫之一。

如果使用更簡潔易懂的方式來理解這三個概念的話,也就是想像成藏書、書櫃 & 圖書館的結構來表示。藏書可以是教科書 or 國考書,裡面儲存著你需要準備考試的知識以及題庫,而Docker Daemon就好比圖書管理員的概念,你想要找的書籍可以請求管理員幫忙尋找,他會告訴你相對應的櫃號以方便取用。而整座圖書館包含著所有你想知道的答案以及知識捷徑。

--

--