跳到主要內容
Cypher's Practical Coding
正在準備工作環境...

映像檔、容器、倉庫:三個核心概念

先從廚房說起

你開了一家電商,每到週年慶就要大量招募臨時客服人員。

新人第一天報到,你不可能讓他們自己摸索系統。你會準備一份標準操作手冊:第 1 頁到第 20 頁是系統操作說明,第 21 頁是常見問題,第 22 頁是話術範本。

每個新人拿到同一份手冊,按照同樣的步驟學習,上手速度和服務品質就能標準化。

Docker 的三個核心概念,和這件事非常像。


三個核心概念

一、映像檔(Image)=食譜 / 操作手冊

映像檔是一份「靜態的說明書」。

它記錄了:

  • 這個程式需要什麼作業系統環境
  • 需要安裝哪些套件
  • 程式碼放在哪裡
  • 啟動時執行什麼指令

映像檔本身不會動。它是一個範本,一個藍圖,一份食譜。

就像你的客服操作手冊——它只是一本書,不是實際在工作的人。

二、容器(Container)=實際在跑的實例

容器是「根據映像檔啟動起來、正在執行的程式」。

同一份映像檔,可以同時啟動 10 個容器,就像同一份操作手冊,可以同時訓練 10 個客服人員。

每個容器:

  • 彼此獨立,互不干擾
  • 可以隨時啟動、停止、刪除
  • 停止之後,映像檔還在,隨時可以再啟動一個新容器

就像客服人員下班了,操作手冊還在書架上,下次還可以用。

三、倉庫(Registry)=映像檔的圖書館

倉庫是存放和分發映像檔的地方。

最有名的公開倉庫是 Docker Hub,就像 App Store 或是 GitHub——工程師把打包好的映像檔推送(push)上去,其他人或其他伺服器可以拉取(pull)下來使用。

公司也可以架設私有倉庫,確保內部的映像檔不會公開到網路上。


用一張表整理

概念類比特性
映像檔(Image)食譜 / 操作手冊靜態、可複製、是範本
容器(Container)按照食譜煮出來的菜 / 實際工作的客服動態、可啟動停止、彼此隔離
倉庫(Registry)食譜書圖書館 / Docker Hub集中存放,可推送和拉取

容器的生命週期

一個容器從誕生到消亡,大概長這樣:

[Registry]  ──pull──▶  [Image]  ──run──▶  [Container](執行中)
                                                  │
                                           stop / restart
                                                  │
                                          [Container](停止)
                                                  │
                                               remove
                                                  │
                                            (消失)

用電商場景來說明:

  1. pull:工程師從 Docker Hub 把「商品頁 v2.3」這個映像檔下載到伺服器
  2. run:啟動一個容器,商品頁開始對外服務
  3. stop:發現有 Bug,先把容器停下來(服務暫停)
  4. remove:確認沒問題後,刪除舊容器(映像檔還在,可以再啟動)

一個映像檔可以跑幾個容器?

理論上,只要伺服器資源夠,同一個映像檔可以同時跑很多個容器。

這就是所謂的水平擴展(scaling):週年慶流量暴增,工程師可以把商品頁的容器從 2 個擴到 20 個,流量消退後再縮回去。

這也是雲端服務最強大的能力之一——你只需要一份映像檔,就能彈性應對各種流量規模。


容器 vs 虛擬機(VM)

你可能聽過「虛擬機」(Virtual Machine, VM)這個詞。容器和虛擬機都能隔離環境,但有個關鍵差異:

容器虛擬機
啟動速度幾秒幾分鐘
佔用資源輕量
隔離程度共用 OS kernel完全獨立
比喻共用廚房但各自烹飪各自擁有一整棟房子

現代電商平台幾乎都用容器,因為它快、輕、好管理。


練習題


AI 協作:學了這個,跟 AI 怎麼配合?

理解映像檔、容器、倉庫的關係,讓你能用工程師的語言向 AI 描述問題,得到更精準的技術建議或溝通策略。

你的人類優勢:

  • 你知道這次部署的業務目的(例如:這個版本是為了支援週年慶活動),AI 無從得知
  • 你能判斷問題的優先等級:容器掛掉是否影響金流,還是只影響行銷頁面,需要你來做業務判斷

可以這樣跟 AI 說:

我們公司的電商平台用 Docker 部署。工程師說「商品頁容器 OOM(記憶體不足)被殺掉了,需要重新調整映像檔的資源配置」。請用非技術語言解釋這件事對用戶的影響,以及 PM 應該在這個情境下問工程師哪些問題?

挑戰任務

Task 1

請說明「映像檔」和「容器」的差別。用「食譜」和「煮好的菜」這個比喻,延伸到電商場景:什麼是「訂單系統的映像檔」?什麼是「訂單系統的容器」?

Task 2

雙十一大促銷,電商平台預期流量是平時的 10 倍。從「容器可以水平擴展」的概念出發,你會怎麼跟工程師討論這件事?寫出你會問的問題。

Task 3

倉庫(Registry)在整個部署流程中扮演什麼角色?為什麼公司通常會架設私有倉庫而不只用公開的 Docker Hub?

BackNext Lesson →