Docker 和 Docker Compose 的关系
1. Docker 和 Docker Compose 的关系
Docker 和 Docker Compose 是 容器化 相关的工具,Docker Compose 是 Docker 的一个补充工具,用于管理 多容器应用。它们的关系如下:
- Docker 是一个容器管理工具,负责 构建、运行、分发 容器。
- Docker Compose 是一个 编排工具,用于 定义和管理多个 Docker 容器,通常用于 微服务架构 或 多个服务的协调部署。
可以简单理解:
- Docker → 运行 单个容器(比如
docker run
命令)。 - Docker Compose → 运行 多个容器(比如
docker-compose up
命令)。
2. Docker Compose 介绍
Docker Compose 通过 docker-compose.yml
文件 定义多个容器的配置,并可以一键启动或管理多个容器。
使用场景
- 微服务架构:如 Web 服务 + 数据库 + Redis,Compose 可以一键启动所有容器。
- 开发环境:团队成员可以通过
docker-compose up
快速启动完整的开发环境。 - 自动化部署:用于本地测试、CI/CD 管道(如 GitHub Actions、Jenkins)。
3. Docker vs. Docker Compose 对比
功能 | Docker | Docker Compose |
---|---|---|
核心作用 | 运行单个容器 | 管理多个容器 |
运行方式 | docker run | docker-compose up |
适用场景 | 单服务(如 nginx ) | 多服务(如 nginx + MySQL + Redis ) |
配置方式 | 命令行参数 | docker-compose.yml 文件 |
适合场景 | 测试单个容器 | 运行微服务架构 |
4. 使用 Docker Compose 示例
假设你要运行一个 Web 服务(Nginx)+ 数据库(MySQL) 的环境,可以使用 docker-compose.yml
轻松管理多个容器。
4.1 编写 docker-compose.yml
version: '3' # 版本号
services:
web:
image: nginx:latest # 使用 Nginx 作为 Web 服务器
ports:
- "8080:80" # 访问端口映射
depends_on:
- db # 依赖数据库服务
db:
image: mysql:5.7 # 使用 MySQL 5.7
environment:
MYSQL_ROOT_PASSWORD: example # 设置 MySQL root 密码
ports:
- "3306:3306"
4.2 启动服务
在 docker-compose.yml
所在目录运行:
docker-compose up -d # 以后台模式启动
💡 这样 Nginx 和 MySQL 就会同时启动,并且 Nginx 可以直接访问 MySQL,而不需要手动创建和管理容器。
5. Docker Compose 的核心命令
命令 | 作用 |
---|---|
docker-compose up -d | 启动所有服务(-d 表示后台运行) |
docker-compose down | 停止并删除所有服务 |
docker-compose ps | 查看正在运行的服务 |
docker-compose logs | 查看所有容器日志 |
docker-compose restart | 重启所有容器 |
docker-compose exec <service> | 进入指定服务容器,如 docker-compose exec web bash |
6. 总结
对比项 | Docker | Docker Compose |
---|---|---|
管理单个容器 | ✅ 适合 | ❌ 不适合 |
管理多个容器 | ❌ 不适合 | ✅ 适合 |
适用于微服务架构 | ❌ 较难管理 | ✅ 适合 |
配置方式 | 命令行参数 | docker-compose.yml 文件 |
适用场景 | 运行单个应用 | 运行多个服务(如 Web + 数据库) |
🚀 如果你只需要运行一个单独的 Nginx 或 MySQL,直接用 docker run
就够了。
🚀 如果你要运行多个容器(如 Web + DB + Redis),就用 docker-compose up
,更方便!