Docker Compose 使用指南
Docker-Compose使用指南

Docker Compose 使用指南
Docker Compose 的安裝、配置和常用命令。
安裝 Docker Compose
從官方 Repository 安裝
# 下載最新版本的 docker-compose(以 1.29.2 為例)
curl -L <https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname> -s`-`uname -m` > /usr/local/bin/docker-compose
# 賦予執行權限
sudo chmod +x /usr/local/bin/docker-compose
# 驗證安裝
docker-compose --version
注意事項
請根據實際需求選擇合適的版本號
確保
/usr/local/bin目錄在系統 PATH 中如需更新版本,重複上述步驟即可
Docker Compose 配置文件範例
以下是一個包含 Web 服務和 MySQL 數據庫的 docker-compose.yml 配置範例:
version: "3.9" # Docker Compose 解析規則版本
services: # 定義專案組成,由 web 和 mysql 兩個服務組成
web:
image: web
volumes:
- /home/ubuntu/docker/dist:/usr/share/nginx/html
ports:
- "80:80"
- "443:443"
restart: always
mysql:
depends_on: # 服務間的依賴性
- web
image: haodai/mysql
volumes:
- /home/ubuntu/docker/db_data:/var/lib/mysql
restart: always
environment: # 環境變數定義
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: web
MYSQL_USER: haodai
MYSQL_PASSWORD: 123456
volumes: # 定義數據卷
db_data: {}
wordpress_data: {}
配置說明
Services(服務)
web:Web 服務容器
使用自定義
web映像檔將主機目錄掛載到容器內的 Nginx HTML 目錄
映射 80 和 443 端口(HTTP 和 HTTPS)
設定為自動重啟
mysql:MySQL 數據庫服務
依賴於
web服務(depends_on)使用自定義 MySQL 映像檔
將數據目錄掛載到主機,實現數據持久化
設定數據庫環境變數(用戶名、密碼、數據庫名稱)
Volumes(數據卷)
db_data:MySQL 數據存儲卷
wordpress_data:WordPress 數據存儲卷(預留)
安全建議
⚠️ 重要:生產環境中請避免在配置文件中直接寫入敏感信息(如密碼),建議使用:
環境變數文件(
.env):
# .env
MYSQL_ROOT_PASSWORD=your_secure_password
MYSQL_PASSWORD=your_secure_password
Docker Secrets(適用於 Docker Swarm)
Docker Compose 常用命令
docker-compose build
建構由 docker-compose 設定檔所定義的容器映像檔,但建構完成後不會主動執行容器。
docker-compose build
常用選項
-pull:總是從遠端拉取最新版本的基礎映像檔-force-rm:建構前移除當前基於此設定檔的所有容器-no-cache:不使用快取,強制重新建構
範例:
# 強制重新建構,不使用快取
docker-compose build --no-cache
# 拉取最新版本並建構
docker-compose build --pull
docker-compose up
建構後啟動 docker-compose 專案下的所有容器服務。
docker-compose up
常用選項
d:將顯示模式改為後台方式(detached mode)-force-recreate:強迫重新建立基於此設定檔的所有容器-build:強迫重新建構容器所需要的映像檔-no-deps:不啟動依賴的服務
範例:
# 後台模式啟動所有服務
docker-compose up -d
# 強制重新建構並啟動
docker-compose up --build
# 只啟動特定服務(例如只啟動 web)
docker-compose up web
# 後台模式啟動並強制重建
docker-compose up -d --force-recreate
注意:docker-compose up 預設會將容器命令即時顯示在 CLI 中(前台顯示),使用 -d 選項可改為後台執行。
docker-compose start
啟動 docker-compose 專案下的容器服務,不會執行建構動作(假設容器已存在)。
docker-compose start
範例:
# 啟動所有服務
docker-compose start
# 啟動特定服務
docker-compose start web mysql
docker-compose stop
停止此 docker-compose 專案所有容器的運行(但不會刪除容器)。
docker-compose stop
範例:
# 停止所有服務
docker-compose stop
# 停止特定服務
docker-compose stop web
docker-compose restart
重啟 docker-compose 專案下的容器服務。
docker-compose restart
範例:
# 重啟所有服務
docker-compose restart
# 重啟特定服務
docker-compose restart web
docker-compose rm
刪除由此 docker-compose 專案所建立的所有容器。
docker-compose rm
常用選項
f:強制刪除,不詢問確認v:同時刪除相關的 volumes
範例:
# 刪除所有容器(會詢問確認)
docker-compose rm
# 強制刪除所有容器
docker-compose rm -f
# 刪除容器及相關 volumes
docker-compose rm -v
docker-compose logs
取得 docker-compose 所形成服務的 log 記錄。
docker-compose logs
常用選項
f或-follow:持續輸出日誌,而非僅顯示一次t或-timestamps:顯示每筆輸出的時間資訊-tail=N:只顯示最後 N 行日誌
範例:
# 查看所有服務的日誌
docker-compose logs
# 持續追蹤日誌輸出
docker-compose logs -f
# 顯示帶時間戳的日誌
docker-compose logs -t
# 查看特定服務的日誌
docker-compose logs web
# 查看最後 100 行並持續追蹤
docker-compose logs --tail=100 -f
docker-compose down
與 docker-compose up 的作用相反,執行時會一併清除由 docker-compose up 所建立起的容器、網路設定和 volumes。
docker-compose down
常用選項
v或-volumes:同時刪除 volumes-remove-orphans:刪除未在配置文件中定義的容器
範例:
# 停止並刪除容器、網路
docker-compose down
# 同時刪除 volumes(注意:這會刪除數據!)
docker-compose down -v
# 刪除所有相關資源,包括孤兒容器
docker-compose down --remove-orphans
⚠️ 警告:使用 -v 選項會刪除所有 volumes,這可能導致數據丟失,請謹慎使用!
docker-compose ps
列出專案中所有容器的狀態。
docker-compose ps
docker-compose exec
在運行中的容器內執行命令。
docker-compose exec <service> <command>
範例:
# 在 web 容器中執行 bash
docker-compose exec web bash
# 在 mysql 容器中執行 MySQL 命令
docker-compose exec mysql mysql -u root -p
docker-compose pull
拉取服務所需的映像檔。
docker-compose pull
範例:
# 拉取所有服務的映像檔
docker-compose pull
# 拉取特定服務的映像檔
docker-compose pull web
常用工作流程
1. 初次部署
# 建構映像檔
docker-compose build
# 啟動服務(後台模式)
docker-compose up -d
# 查看日誌確認服務正常
docker-compose logs -f
2. 更新服務
# 停止服務
docker-compose stop
# 拉取最新映像檔
docker-compose pull
# 重新建構(如需要)
docker-compose build
# 啟動服務
docker-compose up -d
3. 查看服務狀態
# 查看容器狀態
docker-compose ps
# 查看資源使用情況
docker-compose top
# 查看日誌
docker-compose logs -f
4. 完全清理
# 停止並刪除所有容器、網路和 volumes
docker-compose down -v
# 清理未使用的映像檔(可選)
docker system prune -a
故障排除
查看容器日誌
# 查看所有服務的日誌
docker-compose logs
# 查看特定服務的日誌
docker-compose logs web
# 持續追蹤日誌
docker-compose logs -f web
進入容器調試
# 進入 web 容器
docker-compose exec web sh
# 進入 mysql 容器
docker-compose exec mysql bash
驗證配置文件
# 檢查配置文件語法
docker-compose config
# 顯示解析後的完整配置
docker-compose config | less
重啟特定服務
# 重啟 web 服務
docker-compose restart web
# 強制重新建立並啟動
docker-compose up -d --force-recreate web

