Docker Compose使用指南
1. Docker Compose概述
1.1 什么是Docker Compose
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务,然后使用一个命令,就可以创建并启动所有服务。
1.2 主要功能和优势
- 简化复杂应用部署:通过单个YAML文件定义多个容器服务
- 环境一致性:确保开发、测试和生产环境的一致性
- 自动化管理:一键启动、停止和重建服务
- 服务间依赖管理:自动处理服务启动顺序
- 扩展性:轻松扩展服务实例数量
1.3 适用场景
- 开发环境搭建
- 自动化测试环境部署
- 生产环境服务编排
- 持续集成和持续部署流程
- 微服务架构应用部署
2. 环境要求与安装
2.1 前置条件
- Docker Engine已安装(版本17.06.0或更高)
- 操作系统要求:
- Windows 10/11专业版或企业版
- macOS 10.14或更高版本
- Linux(主流发行版均支持)
2.2 安装方法
Windows安装
- Docker Desktop for Windows已包含Compose
- 独立安装:
# 使用PowerShell安装
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest "https://github.com/docker/compose/releases/latest/download/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-compose.exe
Linux安装
# 下载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
macOS安装
- Docker Desktop for Mac已包含Compose
- 使用Homebrew安装:
brew install docker-compose
2.3 验证安装
docker-compose --version
3. 基本使用方法
3.1 docker-compose.yml文件
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
3.2 常用配置项说明
- version: Compose文件格式版本
- services: 定义应用的各个服务
- networks: 定义服务间的网络
- volumes: 定义数据卷
- environment: 环境变量配置
- depends_on: 服务依赖关系
- ports: 端口映射
4. 命令参考
4.1 docker-compose up - 创建并启动容器
命令格式:
docker-compose up [OPTIONS] [SERVICE...]
命令示例:
# 启动所有服务
docker-compose up
# 后台运行服务
docker-compose up -d
# 启动指定服务
docker-compose up web db
参数说明:
参数名 | 必填 | 类型 | 可选值 | 默认值 | 说明 |
---|---|---|---|---|---|
-d | 否 | boolean | - | false | 后台运行 |
--build | 否 | boolean | - | false | 构建镜像 |
--force-recreate | 否 | boolean | - | false | 强制重新创建容器 |
4.2 docker-compose down - 停止并删除容器
命令格式:
docker-compose down [OPTIONS]
命令示例:
# 停止并删除所有容器
docker-compose down
# 同时删除卷
docker-compose down -v
参数说明:
参数名 | 必填 | 类型 | 可选值 | 默认值 | 说明 |
---|---|---|---|---|---|
-v, --volumes | 否 | boolean | - | false | 删除卷 |
--rmi | 否 | string | all/local | - | 删除镜像 |
4.3 docker-compose ps - 列出容器
命令格式:
docker-compose ps [OPTIONS] [SERVICE...]
命令示例:
# 列出所有容器
docker-compose ps
# 列出指定服务的容器
docker-compose ps web
4.4 docker-compose logs - 查看容器日志
命令格式:
docker-compose logs [OPTIONS] [SERVICE...]
命令示例:
# 查看所有容器日志
docker-compose logs
# 实时查看日志
docker-compose logs -f
参数说明:
参数名 | 必填 | 类型 | 可选值 | 默认值 | 说明 |
---|---|---|---|---|---|
-f | 否 | boolean | - | false | 实时查看 |
--tail | 否 | string | - | all | 显示日志行数 |
4.5 docker-compose exec - 在容器中执行命令
命令格式:
docker-compose exec [OPTIONS] SERVICE COMMAND [ARGS...]
命令示例:
# 在web服务容器中执行bash
docker-compose exec web bash
# 在db服务容器中执行mysql命令
docker-compose exec db mysql -u root -p
参数说明:
参数名 | 必填 | 类型 | 可选值 | 默认值 | 说明 |
---|---|---|---|---|---|
-T | 否 | boolean | - | false | 禁用伪终端 |
--index | 否 | int | - | 1 | 指定容器序号 |