目錄

Docker 是什麼?映像檔與容器一次看懂

Docker 解決什麼問題

寫程式的人幾乎都遇過這種情況:程式在自己電腦上跑得好好的,放到同事電腦或伺服器上就出錯。原因通常是環境不同,例如 Python 版本不一樣、少裝一個函式庫、設定檔路徑不同。

Docker 的做法是:把程式連同它的執行環境一起打包。打包好的東西在任何裝了 Docker 的機器上,執行起來都一樣。

三個核心概念

概念是什麼比喻
映像檔(Image)唯讀的範本,包含程式、函式庫、設定安裝光碟
容器(Container)由映像檔啟動、正在執行的實體用光碟裝好、正在跑的程式
Registry存放與分享映像檔的地方,例如 Docker HubApp Store

一個映像檔可以同時啟動很多個容器,彼此互不干擾。容器刪掉了,映像檔還在,隨時可以再開一個新的。

映像檔是一層一層疊起來的

映像檔由多個**層(layer)**組成。例如一個 Python 網站的映像檔可能是:

  1. 基礎作業系統層(例如 Debian)
  2. Python 執行環境層
  3. 安裝套件(pip install)的那一層
  4. 你的程式碼那一層

不同的映像檔可以共用相同的底層,所以下載和儲存都很省空間。這也是之後寫 Dockerfile 時要注意指令順序的原因。

容器和虛擬機有什麼不同

虛擬機(VM)會模擬一整台電腦,每台都有自己完整的作業系統。容器則是共用主機的作業系統核心,只隔離程式本身需要的部分。

容器虛擬機
啟動時間秒級,甚至更快通常要數十秒到數分鐘
大小數 MB 到數百 MB通常數 GB
隔離程度程序層級完整作業系統
同一台主機能跑幾個很多較少

容器不是用來取代虛擬機的。很多雲端服務其實是在虛擬機裡面跑容器,兩者經常一起使用。

Docker 的組成

當你在終端機輸入 docker 指令時,實際上是:

  • Docker CLI:你輸入的命令列工具
  • Docker Engine(dockerd):在背景執行、真正負責建立和執行容器的服務
  • Docker Hub:預設的公開 Registry,docker run nginx 時就是從這裡下載 nginx 映像檔

在 Windows 和 macOS 上,通常透過 Docker Desktop 一次安裝好上面這些元件。

小結

  • Docker 把程式和環境一起打包,解決「環境不一致」的問題
  • 映像檔是範本,容器是執行中的實體
  • 容器比虛擬機輕量、啟動快

下一節我們會在你的電腦上安裝 Docker。

更新於 2026年10月12日