完成這三個案例後,掌握:
- Docker CLI 日常容器操作
- Dockerfile 撰寫與自訂 image 建立
- Docker Compose 多容器 app 管理
- 容器化 app 開發與部署 flow
| 技能領域 | 技能點 | Case 1 | Case 2 | Case 3 |
|---|---|---|---|---|
| 基本操作 | docker run, docker ps, docker logs |
V | V | V |
| 容器管理 | docker stop, docker start, docker rm |
V | V | V |
| Image 操作 | docker images, docker pull, docker build |
V | V | V |
| Volume 掛載 | -v, --mount |
V | ||
| Port mapping | -p, --publish |
V | V | V |
| Dockerfile | FROM, COPY, RUN, CMD, EXPOSE |
V | V | |
| 容器 Debug | docker exec, docker logs |
V | V | V |
| Docker Compose | docker-compose up/down, depends_on |
V | ||
| 多容器 Network | Service discovery, container networking | V |
Docker-Practice-Cases/
├── README.md # 主要說明文件
├── case1-nginx-static-site/ # Case 1: 基本容器操作
│ ├── README.md
│ └── html/
│ └── index.html
├── case2-node-dockerfile/ # Case 2: Dockerfile 建立自訂 image
│ ├── README.md
│ ├── Dockerfile
│ ├── package.json
│ └── app.js
└── case3-node-redis-compose/ # Case 3: 多容器系統
├── README.md
├── docker-compose.yml
├── Dockerfile
├── package.json
└── app.js
重點: 基本容器操作、Volume mount、Port mapping
使用官方 Nginx image 架設靜態網站,涵蓋:
- 容器啟動與 lifecycle 管理
- 本機檔案 mount 到容器內
- Port mapping 讓外部存取 service
- 檢視容器 logs 進行 debug
重點: Dockerfile 撰寫、Image build
建立 Node.js Express app,涵蓋:
- 撰寫 Dockerfile 定義 image build flow
- 使用
docker build建立自訂 image - 理解 image layer 結構與 best practice
- 測試自建 image 的功能
重點: Docker Compose、多容器協作
建立包含 Web app 與 Redis cache 的分散式系統,涵蓋:
- 使用 Docker Compose 定義多容器 architecture
- 容器間 network 通訊與 service discovery
- Dependency 管理 (
depends_on) - 多容器 app 的統一管理
環境需求:
- Docker Desktop 或 Docker Engine
- Git (用於複製此專案)
# 檢查 Docker 版本
docker --version
# 檢查 Docker 是否正常運作
docker run hello-world- 循序漸進: 按順序完成,每個 Case 都建立在前一個的基礎上
- 動手實作: 親自輸入每個指令,避免只是複製貼上
- 理解原理: 思考每個指令背後的作用和原理
- 除錯練習: 遇到錯誤時,練習使用
docker logs和docker exec進行除錯
# 容器操作
docker run -d -p 8080:80 nginx # 背景執行容器
docker ps # 查看執行中容器
docker ps -a # 查看所有容器
docker logs <container_id> # 查看容器 logs
docker exec -it <container_id> bash # 進入容器內部
docker stop <container_id> # 停止容器
docker rm <container_id> # 刪除容器
# Image 操作
docker images # 列出本機 image
docker build -t my-app . # 建立 image
docker pull nginx # 下載 image
docker rmi <image_id> # 刪除 image
# Docker Compose
docker-compose up -d # 啟動所有服務
docker-compose down # 停止並移除所有服務
docker-compose logs # 查看所有服務 logs
docker-compose ps # 查看服務狀態