一、Docker Compose 管理服务的核心方式
Docker Compose 遵循 "一个配置文件,一套命令" 的核心思想,主要通过以下步骤和命令来管理服务:
1. 核心配置文件:docker-compose.yml
这是定义所有服务的核心,它描述了服务的镜像、端口映射、数据卷、网络、依赖关系、环境变量等。示例配置文件(以 Web + 数据库为例):
yaml
version: '3.8' # Compose 文件版本(需与 Docker 版本匹配)
# 定义要管理的服务
services:
# 第一个服务:web 应用
web:
image: nginx:alpine # 使用的镜像
ports:
- "8080:80" # 端口映射(主机:容器)
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf # 挂载配置文件
depends_on:
- db # 依赖 db 服务,启动时先启动 db
restart: always # 容器退出时自动重启
networks:
- app-network # 加入自定义网络
# 第二个服务:数据库
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456 # 环境变量(数据库密码)
MYSQL_DATABASE: mydb
volumes:
- db-data:/var/lib/mysql # 持久化数据卷
networks:
- app-network
# 定义数据卷(持久化数据)
volumes:
db-data:
# 定义自定义网络(隔离服务)
networks:
app-network:
driver: bridge
2. 核心命令:管理服务的生命周期
所有命令都在 docker-compose.yml 所在目录执行,核心命令如下:
| 命令 | 作用 | 示例 |
|---|---|---|
docker-compose up |
启动所有服务(前台运行) | docker-compose up(前台)docker-compose up -d(后台运行,推荐) |
docker-compose down |
停止并删除容器、网络(保留数据卷) | docker-compose down(仅停容器)docker-compose down -v(删除数据卷) |
docker-compose start |
启动已创建的服务容器 | docker-compose start web(仅启动 web 服务) |
docker-compose stop |
停止服务容器(不删除) | docker-compose stop db(仅停止 db 服务) |
docker-compose restart |
重启服务 | docker-compose restart web |
docker-compose ps |
查看服务状态 | docker-compose ps(列出所有服务容器) |
docker-compose logs |
查看服务日志 | docker-compose logs -f web(实时查看 web 日志) |
docker-compose scale |
扩缩容服务(旧版) | docker-compose scale web=3(启动 3 个 web 容器) |
docker-compose up --scale |
扩缩容服务(新版) | docker-compose up -d --scale web=3 |
3. 关键管理能力详解
- 依赖管理 :通过
depends_on定义服务启动顺序(如先启动数据库,再启动 web),确保服务依赖的组件先就绪。 - 资源隔离 :通过自定义
networks让服务仅在指定网络内通信(避免与主机其他容器冲突),通过volumes持久化数据(容器删除后数据不丢失)。 - 环境配置 :通过
environment或.env文件注入环境变量,实现配置与代码分离(如数据库密码不硬编码)。 - 自动重启 :通过
restart: always配置,服务容器异常退出时自动重启,保证服务可用性。 - 日志聚合 :通过
docker-compose logs统一查看所有服务的日志,无需逐个容器查看。
二、实操示例:完整的服务管理流程
-
编写配置文件 :创建
docker-compose.yml(如上述 Web + MySQL 示例)。 -
启动服务 :
bash
运行
docker-compose up -d # 后台启动所有服务 -
查看状态 :
bash
运行
docker-compose ps # 查看服务是否正常运行 -
查看日志 :
bash
运行
docker-compose logs -f web # 实时查看 web 服务日志 -
扩缩容 :
bash
运行
docker-compose up -d --scale web=2 # 启动 2 个 web 容器 -
停止服务 :
bash
运行
docker-compose stop # 停止所有服务(容器保留) -
清理资源 :
bash
运行
docker-compose down -v # 停止并删除容器、网络、数据卷(谨慎使用)
Docker Compose 主要分为两个大版本,命令形式和安装 / 运行方式有明显区别:
| 版本 | 命令形式 | 核心特征 |
|---|---|---|
| Compose V1 | docker-compose up |
基于 Python 开发的独立工具,需要单独安装(如 pip install docker-compose) |
| Compose V2 | docker compose up |
集成到 Docker CLI 中的子命令(Go 语言重构),随 Docker Desktop 或 Docker Engine 一起分发 |
总结
- Docker Compose 通过
docker-compose.yml统一定义多服务的配置(镜像、端口、依赖、网络等),替代手动逐个创建容器的繁琐操作。 - 核心命令(
up/down/start/stop/logs)实现服务全生命周期管理,支持启动、停止、重启、扩缩容、日志查看等核心操作。 - 关键能力(依赖管理、资源隔离、自动重启)确保多容器应用的稳定性和可维护性,是单机多容器应用的首选管理工具。