在現代容器化應用開發中,Docker Compose 是一個不可或缺的工具,它能夠幫助我們輕松定義和運行多容器的 Docker 應用程序。
一、什么是 Docker Compose?
Docker Compose 是 Docker 官方提供的一個工具,用于定義和運行多容器 Docker 應用程序。通過一個 YAML 文件(docker-compose.yml),我們可以配置應用程序的服務,然后使用一個命令就可以從配置中創建并啟動所有服務。官網直通車
Docker Compose 的優勢
- 簡化配置:通過一個配置文件管理多個容器
- 一鍵部署:一條命令啟動整個應用棧
- 環境一致性:開發、測試、生產環境配置統一
- 服務編排:自動處理服務間的依賴關系
二、安裝 Docker Compose
1.在 Linux 上安裝
(1)方法一:使用包管理器安裝(推薦)
對于 Ubuntu/Debian 系統:
# 更新包索引
sudo apt update# 安裝 Docker Compose 插件
sudo apt install docker-compose-plugin# 驗證安裝
docker compose version
對于 CentOS/RHEL/Fedora 系統:
# CentOS/RHEL 8+
sudo yum install docker-compose-plugin# Fedora
sudo dnf install docker-compose-plugin# 驗證安裝
docker compose version
(2)方法二:下載二進制文件
# 下載最新版本的 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 添加執行權限
sudo chmod +x /usr/local/bin/docker-compose# 驗證安裝
docker-compose --version
2.在其他平臺安裝
- macOS:如果使用 Docker Desktop,已經包含 Docker Compose
- Windows:如果使用 Docker Desktop,已經包含 Docker Compose
三、Docker Compose 基本使用
1. 創建 docker-compose.yml 文件
version: '3.8'services:web:image: nginx:latestports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmldepends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: passwordMYSQL_DATABASE: myappvolumes:- db_data:/var/lib/mysqlvolumes:db_data:
2. 常用命令詳解
# 啟動所有服務
docker compose up# 后臺啟動服務
docker compose up -d# 停止服務并清理容器
docker compose down# 查看運行狀態
docker compose ps# 查看日志
docker compose logs# 重新構建服務
docker compose build# 重啟服務
docker compose restart
四、實際應用示例
1.構建一個完整的 Web 應用環境
version: '3.8'services:# 前端服務frontend:image: node:16working_dir: /appvolumes:- ./frontend:/appports:- "3000:3000"command: npm startenvironment:- REACT_APP_API_URL=http://backend:5000depends_on:- backend# 后端服務backend:build: ./backendports:- "5000:5000"environment:- DATABASE_URL=postgresql://user:pass@db:5432/mydb- REDIS_URL=redis://redis:6379depends_on:- db- redis# 數據庫db:image: postgres:13environment:POSTGRES_DB: mydbPOSTGRES_USER: userPOSTGRES_PASSWORD: passvolumes:- postgres_data:/var/lib/postgresql/dataports:- "5432:5432"# 緩存redis:image: redis:alpineports:- "6379:6379"volumes:postgres_data:
2.使用環境變量
創建 .env
文件:
DB_HOST=localhost
DB_PORT=5432
TAG=v1.0
在 docker-compose.yml 中使用:
version: '3.8'services:app:image: myapp:${TAG:-latest}environment:- DB_HOST=${DB_HOST}- DB_PORT=${DB_PORT}env_file:- .env
3.高級使用技巧
多環境配置管理
# 開發環境
docker compose -f docker-compose.yml -f docker-compose.dev.yml up# 生產環境
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
五、docker compose和docker-compose區別
1.安裝docker compose
sudo apt install docker-compose-plugin
# 使用方式:docker compose(注意中間有空格)
2.安裝docker-compose
sudo apt install docker.io docker-compose
# 使用方式:docker-compose(連寫,帶橫線)
3.詳細對比分析
特性 | docker-compose-plugin | docker-compose |
---|---|---|
安裝命令 |
|
|
官方推薦 | ? Docker官方推薦的新方式 | 傳統方式 |
維護狀態 | 積極維護 | 逐漸被替代 |
功能完整性 | 完全兼容 | 完全兼容 |
更新頻率 | 更頻繁 | 較慢 |
總的來說docker-compose是v1版本,docker compose是v2版本,官方推薦用新版的。