Docker Compose使用教程
1. 简介
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过一个YAML文件配置应用程序的所有服务,然后使用单个命令启动、停止和管理所有服务。
2. 安装Docker Compose
确保已安装Docker引擎
安装Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证安装:
docker-compose --version
3. 基础概念
服务(Service):一个应用容器,例如web服务器或数据库
项目(Project):一组相关联的服务组成完整应用
YAML文件:定义服务、网络和卷的配置文件
4. 创建第一个Compose文件
创建项目目录:
mkdir my-compose-app
cd my-compose-app
创建docker-compose.yml文件:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
创建静态内容目录:
mkdir html
echo "<h1>Hello Docker Compose</h1>" > html/index.html
5. 管理服务
启动服务:
docker-compose up -d
查看运行状态:
docker-compose ps
查看日志:
docker-compose logs -f web
停止服务:
docker-compose down
6. 多服务应用示例
更新docker-compose.yml添加数据库服务:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: myapp
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
启动多服务应用:
docker-compose up -d
验证数据库连接:
docker-compose exec db mysql -uroot -pexample -e "SHOW DATABASES;"
7. 网络配置
自定义网络示例:
version: '3.8'
services:
frontend:
image: myapp-frontend
networks:
- front-tier
backend:
image: myapp-backend
networks:
- front-tier
- back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
验证网络连接:
docker-compose exec frontend ping backend
8. 环境变量管理
创建.env文件:
DB_PASSWORD=secret
DB_NAME=production
在docker-compose.yml中使用变量:
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
验证变量加载:
docker-compose config
9. 扩展服务
创建多个实例:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080-8082:80"
deploy:
replicas: 3
启动扩展服务:
docker-compose --compatibility up -d
10. 数据持久化
使用命名卷:
version: '3.8'
services:
db:
image: postgres:13
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
备份数据卷:
docker run --rm -v my-compose-app_postgres_data:/volume -v $(pwd):/backup alpine tar cvf /backup/postgres_backup.tar /volume
11. 健康检查
添加健康检查配置:
version: '3.8'
services:
web:
image: nginx:latest
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
监控健康状态:
docker inspect --format='{{json .State.Health}}' $(docker-compose ps -q web)
12. 高级配置
使用自定义Dockerfile:
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
资源限制:
services:
db:
image: mysql:5.7
deploy:
resources:
limits:
cpus: '0.50'
memory: 512M
13. 总结
Docker Compose通过简化多容器应用的部署和管理,极大提高了开发效率。本教程涵盖了从基础安装到高级配置的全流程,包括服务定义、网络管理、数据持久化和健康检查等关键特性。通过编写清晰的docker-compose.yml文件,开发者可以轻松定义复杂的应用架构,实现一键式部署和扩展。掌握Docker Compose是现代容器化应用开发的必备技能,它能有效简化开发、测试和生产环境的一致性管理。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。





