📦 什麼是 Docker?
Docker 就像虛擬機器,但更輕量、快速、可移植。它透過「容器」打包應用程式與其依賴(OS、lib、framework 等),讓你:
- 確保「在我這沒問題」在別人電腦也能運行
- 快速部署應用(例如 Python、Node.js、MySQL)
- 實現微服務架構(每個服務一個容器)
🧱 核心概念
| 名稱 | 說明 |
|---|---|
| Image | Docker 映像檔,像是應用的「模板」 |
| Container | 從 Image 啟動的實際執行單元(容器) |
| Dockerfile | 定義 Image 的腳本 |
| Docker Hub | 像 GitHub,一個公開的 Docker 映像中心 |
| Volume | 用來持久化資料 |
| Port Mapping | 將容器內的 Port 對應到主機 Port |
🧰 1. 安裝 Docker
- 官方網站:https://www.docker.com/products/docker-desktop/
- 支援 Windows / macOS / Linux
安裝後確認:
docker --version
docker info
🚀 2. Docker 基本指令
| 功能 | 指令 |
|---|---|
| 檢查版本 | docker --version |
| 查看正在運行容器 | docker ps |
| 查看所有容器 | docker ps -a |
| 拉取映像檔 | docker pull nginx |
| 啟動容器 | docker run hello-world |
| 列出映像檔 | docker images |
| 停止容器 | docker stop 容器ID或名稱 |
| 刪除容器 | docker rm 容器ID或名稱 |
| 刪除映像檔 | docker rmi 映像檔名稱或ID |
🏗️ 3. 建立自己的容器(以 Python 為例)
docker run -it python:3.11
-it:進入互動模式python:3.11:從 Docker Hub 下載並執行
輸入 print("Hello, Docker!") 試試!
🧑🍳 4. 使用 Dockerfile 自定義映像檔
建立 Dockerfile(無副檔名):
# 使用官方 Python 基礎映像
FROM python:3.11
# 設定工作目錄
WORKDIR /app
# 複製當前資料夾到容器內
COPY . .
# 安裝相依套件
RUN pip install -r requirements.txt
# 預設執行指令
CMD ["python", "main.py"]
然後在該目錄下建立 main.py,內容:
print("Docker Python App is running!")
建立映像檔並執行:
docker build -t my-python-app .
docker run my-python-app
🌍 5. 開放 Port:網頁應用範例
例如:使用 Flask
docker run -p 5000:5000 my-python-app
- 容器內部 5000 port → 主機的 5000 port
你就可以開瀏覽器輸入 http://localhost:5000 測試應用程式了。
📦 6. Volume(資料持久化)
假設你要保存容器內 /data 目錄的資料:
docker run -v /本機路徑:/data my-python-app
- 例如:
-v $(pwd)/data:/data - 用於資料庫容器(像 MySQL/PostgreSQL)非常重要
🔄 7. Docker Compose(多容器架構)
建立 docker-compose.yml 讓多個容器一起運作,例如:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
啟動:
docker-compose up
停止:
docker-compose down
📚 常見用途
| 場景 | 使用方式 |
|---|---|
| 建立 Web 應用 | Python Flask、Node.js、React、Vue 搭配 Nginx |
| 建立資料庫環境 | MySQL、PostgreSQL、MongoDB、Redis |
| 自動化測試環境 | Jenkins、Selenium、CI/CD |
| 建立開發沙盒 | 開發者每人一個獨立容器 |
🛠️ 補充工具
- Docker Desktop:圖形化界面(Windows/macOS)
- Portainer:Web UI 管理 Docker
- Play with Docker:線上 Docker 測試環境
🧠 總結
| 你想做什麼? | 用這個 Docker 指令 |
|---|---|
| 快速執行容器(試試看) | docker run hello-world |
| 建立你自己的容器 | Dockerfile + docker build |
| 執行 Web 應用(Flask) | docker run -p 5000:5000 my-app |
| 搭建多容器架構 | docker-compose up |
廣告


