跳轉至

建立 2025-08-18 更新 2026-09-28

認識 Docker

Docker 是一個把程式裝進「容器」(container)裡執行的工具。容器就像一個打包好的盒子,裡面放著程式和它需要的一切:程式語言、套件、設定檔。不管這個盒子拿到誰的電腦、哪台伺服器,打開來都能用一模一樣的方式執行。本頁說明 Docker 解決了什麼問題、幾個一定要懂的名詞,以及怎麼安裝並跑起第一個容器。

Docker 解決了什麼問題?

寫程式的人常遇到這種狀況:程式在自己電腦上跑得好好的,交給同事或放到伺服器上卻出錯。原因通常是兩邊環境不一樣,例如 Python 版本不同、少裝了某個套件、設定檔路徑不同。

Docker 的做法是:把程式和它的執行環境一起打包。別人拿到的不只是程式碼,而是一個「已經裝好所有東西」的環境,所以不會因為環境差異而出錯。

這個名字來自貨櫃(container)。海運貨櫃有統一的尺寸,不管裡面裝什麼,港口都能用同樣的方式搬運。Docker 容器也一樣:不管裡面是 Python、Node.js 還是資料庫,都能用同樣的指令啟動和管理。

容器和虛擬機有什麼不同?

虛擬機(Virtual Machine, VM)也能提供隔離的環境,但做法不同:

  • 虛擬機是模擬一整台電腦,每台都要裝一套完整的作業系統。
  • 容器則共用你電腦的作業系統核心,只裝程式需要的部分。
比較 虛擬機 Docker 容器
啟動時間 數十秒到數分鐘 通常 1~2 秒
檔案大小 好幾 GB 幾 MB 到幾百 MB
同一台電腦能跑幾個 幾台 幾十個甚至上百個
適合用來 需要不同作業系統的情況 打包、執行應用程式

Windows 和 macOS 也能用嗎?

可以。容器需要 Linux 核心,所以 Docker Desktop 會在背景自動開一台很小的 Linux 虛擬機來跑容器。你不需要自己設定,使用起來和在 Linux 上一樣。

四個一定要懂的名詞

名詞 白話解釋 比喻
Image(映像檔) 一個唯讀的範本,裡面包含程式與執行環境 做蛋糕的模具
Container(容器) 用 Image 啟動、正在執行的程式 用模具做出來的蛋糕
Registry(倉庫) 存放與分享 Image 的地方,最常用的是 Docker Hub 放模具的倉庫
Volume(資料卷) 容器外的儲存空間,用來保存資料 蛋糕店的冷藏庫

用一個 Image 可以啟動很多個容器,就像一個模具可以做出很多個蛋糕。容器被刪除時,裡面的資料也會跟著消失,所以需要保存的資料(例如資料庫)要放在 Volume 裡。

如何安裝 Docker?

Windows 和 macOS

下載並安裝 Docker Desktop。它包含了 Docker 引擎、指令工具、Docker Compose 和圖形介面。安裝完成後打開 Docker Desktop,等左下角顯示引擎已啟動即可。

Linux

Linux 安裝的是 Docker Engine。想快速在測試機上安裝,可以用官方提供的安裝腳本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安裝後每次執行 docker 都要加 sudo。如果想省略,可以把自己加進 docker 群組,重新登入後生效:

sudo usermod -aG docker $USER

注意

加入 docker 群組的帳號,等於擁有這台電腦的最高權限,只把信任的帳號加進去。正式伺服器建議依照 官方安裝文件 的步驟安裝。

跑起第一個容器

確認安裝成功

docker run --rm hello-world

這一行指令做了三件事:

  1. 在你的電腦上找 hello-world 這個 Image。
  2. 找不到,就自動從 Docker Hub 下載。
  3. 用它啟動一個容器,印出 Hello from Docker! 後結束。

--rm 的意思是「容器結束後自動刪除」,適合這種只跑一次的測試。

進入一個容器裡看看

docker run --rm -it alpine sh

這會啟動一個 Alpine Linux(很小的 Linux 版本)容器,並讓你進到它的終端機裡。-it 讓你可以在容器裡打字操作。試著輸入:

cat /etc/os-release   # 看看這是什麼系統
ls /                  # 列出根目錄
exit                  # 離開,容器會自動刪除

你會發現容器裡是一個獨立的 Linux 環境,和你的電腦互不影響。

跑一個網站

docker run -d --name web -p 8080:80 nginx

打開瀏覽器連到 http://localhost:8080,會看到 Nginx 的歡迎頁面。

  • -d:在背景執行,終端機可以繼續用。
  • --name web:幫容器取名叫 web,之後用名字操作它。
  • -p 8080:80:把你電腦的 8080 埠接到容器的 80 埠。

用完後停止並刪除:

docker stop web
docker rm web

更多操作方式請看下一篇 Docker 基本操作。

推薦影音

What is a container?

簡述:Docker 官方短片,說明容器如何與其他程式隔離,並示範執行第一個容器,對應本頁「四個一定要懂的名詞」。(Docker 官方)

What is an image?

簡述:Docker 官方短片,說明 Image 是容器的藍圖,以及如何從 Docker Hub 取得 Image。(Docker 官方)

you need to learn Docker RIGHT NOW!! // Docker Containers 101

簡述:先講虛擬機、再講 Docker,用生動的比喻說明兩者差異,並實際啟動容器,對應本頁「容器和虛擬機有什麼不同?」。(NetworkChuck)

更多影片請見 影音教學。