Docker 入門教學 2026:香港開發者從零開始學容器化部署
Docker 係現代部署必備技術。本文由安裝 Docker Desktop、第一個 Container、Docker Compose 到部署上 Zeabur/Railway,帶香港開發者完整入門容器化。

Docker 入門只需三步:安裝 Docker Desktop → 執行 docker run hello-world 測試 → 用 Dockerfile 打包自己嘅 App,整個流程 30 分鐘內完成,Mac/Windows/Linux 全支援。
「喺我部電腦跑得,點解上到伺服器就唔得?」呢個係幾乎每個開發者都遇過嘅問題。Docker 就係解決呢個問題嘅工具。它把你嘅 App 連同所有依賴(Python 版本、套件、環境變數)一起打包成一個「容器」,無論喺邊部電腦、邊個作業系統,跑出嚟嘅效果都一樣。學識 Docker,部署問題少一半。
Docker 係咩?點解現代開發必學?
Docker 係一個容器化工具,把應用程式及其所有運行依賴打包成一個「Image」(鏡像),再從 Image 啟動「Container」(容器)運行。
唔學 Docker 會遇到嘅問題:
- 本地開發環境係 Python 3.11,伺服器係 Python 3.9,行為唔同
- 新同事裝環境要半日,每次都漏步驟
- 部署到 AWS/GCP 需要額外配置,難以重現
學識 Docker 之後:
- 一個
Dockerfile定義所有依賴,任何人都可以一條指令重現環境 - 開發、測試、生產環境完全一致
- 部署到 Zeabur、Railway、Render、AWS ECS 都用同一個 Image
2026 年,幾乎所有雲端部署平台(Zeabur、Railway、Fly.io、GCP Cloud Run)都接受 Docker 格式。學識 Docker 等於解鎖所有現代雲端平台。
安裝 Docker Desktop(Mac/Windows 步驟)
Windows 安裝:
- 確認 Windows 版本:需要 Windows 10 版本 2004 以上(Build 19041+)或 Windows 11
- 確認已啟用 WSL2(Windows Subsystem for Linux 2):
- 打開 PowerShell(管理員),輸入:
wsl --install - 重啟電腦
- 打開 PowerShell(管理員),輸入:
- 去 docker.com/products/docker-desktop 下載 Docker Desktop for Windows
- 安裝時選擇「Use WSL 2 instead of Hyper-V」
- 安裝完成後重啟,打開 Docker Desktop,等待圖示由橙色變綠色
macOS 安裝:
- 去同一個頁面,根據你的晶片選擇 Intel 版或 Apple Silicon(M1/M2/M3)版
- 下載
.dmg文件,拖入 Applications 資料夾 - 打開 Docker Desktop,菜單欄會出現 Docker 圖示
- 首次啟動需要輸入系統密碼授權
驗證安裝成功: 打開 Terminal(或 Windows 的 PowerShell),輸入:
docker --version
docker run hello-world
如果見到 “Hello from Docker!” 訊息,代表安裝成功,Docker 正常運行。
基本指令教學(run/build/push/pull/compose)
學識以下指令,足夠應付日常 80% 嘅 Docker 操作:
下載並運行現有 Image:
docker pull nginx # 從 Docker Hub 下載 nginx Image
docker run -p 8080:80 nginx # 啟動 nginx,把容器 80 端口映射到本地 8080
打開瀏覽器輸入 localhost:8080,就可以見到 nginx 歡迎頁面。
建立自己嘅 Image:
先在項目根目錄建立 Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
然後:
docker build -t my-python-app . # 建立 Image,名叫 my-python-app
docker run -p 5000:5000 my-python-app # 啟動容器
其他常用指令:
docker ps # 查看正在運行嘅容器
docker ps -a # 查看所有容器(包括已停止)
docker stop [容器ID] # 停止容器
docker rm [容器ID] # 刪除容器
docker images # 查看本地所有 Image
docker rmi [Image名] # 刪除 Image
docker logs [容器ID] # 查看容器日誌
推送到 Docker Hub:
docker login
docker tag my-python-app 你的用戶名/my-python-app:latest
docker push 你的用戶名/my-python-app:latest
推送後,任何人(或任何伺服器)都可以用 docker pull 你的用戶名/my-python-app 下載你嘅 Image。
Docker Compose:多容器應用管理
現實中,應用程式通常唔止一個容器——Web App + Database + Cache 係常見組合。Docker Compose 讓你用一個 YAML 文件管理多個容器。
典型 docker-compose.yml(Django + PostgreSQL):
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
常用 Compose 指令:
docker compose up -d # 背景啟動所有服務
docker compose down # 停止並移除所有容器
docker compose logs -f # 查看所有服務日誌(即時更新)
docker compose ps # 查看服務狀態
docker compose exec web bash # 進入 web 容器的 shell
Docker Compose 係本地開發同測試最方便嘅工具,一條 docker compose up 就可以把整個開發環境拉起,唔需要逐個服務手動啟動。
部署到 Zeabur/Railway(從本地到雲端)
有咗 Dockerfile,部署到雲端非常簡單。以 Zeabur 同 Railway 為例:
部署到 Zeabur:
- 把代碼(包括 Dockerfile)push 到 GitHub
- 去 zeabur.com,建立新 Project
- 選「Deploy from GitHub」,授權並選擇你的 Repository
- Zeabur 會自動偵測 Dockerfile,建立並部署
- 部署完成後,得到一個
.zeabur.app域名
環境變數設定:
喺 Zeabur 或 Railway 的 Dashboard 設定 Environment Variables,唔好把敏感資訊(API Key、DB 密碼)寫喺代碼入面。Dockerfile 用 ENV 只設定預設值,真實值從平台 Dashboard 注入。
Railway 部署步驟類似:
- 去 railway.app,連接 GitHub
- 選 Repository,Railway 自動偵測 Dockerfile 並部署
- Railway 亦支援直接喺 Dashboard 添加 PostgreSQL、Redis 等服務
兩個平台都提供免費試用額度(Railway $5/月免費,Zeabur 按資源計費),對個人項目足夠。
常見問題 FAQ
Q1:Docker 同虛擬機(VM)有咩分別? 虛擬機模擬完整硬件,每個 VM 跑獨立作業系統,資源消耗大(通常幾 GB RAM)。Docker 容器共享主機作業系統內核,只隔離應用層,啟動只需幾秒,資源消耗小好多。同樣一部電腦可以跑幾十個 Docker 容器,但可能只跑得起幾個 VM。
Q2:Docker Desktop 免費嗎? 個人使用完全免費。企業用途(員工超過 250 人或年收入超過 $1,000 萬美元)需要付費訂閱。對個人開發者同小型團隊,免費版係足夠嘅。
Q3:點解我的容器一停止就失去所有數據?
容器本身係無狀態嘅(Stateless),停止後數據消失係正常行為。要持久保存數據,需要用 Volume(-v 標誌)或 Bind Mount 把容器內嘅路徑映射到主機目錄,或使用外部數據庫服務。
Q4:.dockerignore 係做咩嘅?
同 .gitignore 類似,.dockerignore 告訴 Docker 喺 COPY . . 時忽略哪些文件。常見內容:node_modules/、.env、__pycache__/、.git/。不加 .dockerignore 會導致 Image 體積龐大,build 時間增加。
Q5:Windows 上跑 Docker 比 Mac/Linux 慢?
係嘅,Windows 下 Docker Desktop 通過 WSL2 運行,I/O 性能略遜於原生 Linux。如果你的項目 I/O 密集(如大量文件操作),把代碼放喺 WSL2 文件系統(/home/user/)而非 Windows 文件系統(/mnt/c/)可以大幅提升速度。