Docker Compose 是一个用于定义和运行**多容器** Docker 应用程序的工具。你可以使用一个 YAML 文件(compose.yaml)来配置应用程序所需的所有服务(如后端、数据库、缓存等),然后只需一条命令,就能根据配置创建并启动所有服务。
简单来说,它解决了通过多个 docker run 命令手动启动不同容器所带来的繁琐和易错问题。
✨ 主要优点
使用 Docker Compose 能带来几个很明显的好处:
- 简化控制:将复杂的多容器配置统一写在一个 YAML 文件中,让应用的编排和管理变得更简单。
- 环境一致性:开发、测试、生产环境可以使用相同的配置文件,有效避免“环境不一致导致的问题”。
- 提升效率:可以缓存配置以快速重建环境,并能通过
depends_on自动管理服务启动顺序。
📝 如何安装
Docker Compose 的安装方式取决于你的操作系统。
| 操作系统 | 安装方式与说明 |
|---|---|
| Windows / macOS | 推荐安装 Docker Desktop。Docker Compose 已包含在其中,安装 Docker Desktop 即可直接使用。 |
| Linux | 需要手动安装。请根据以下步骤操作。 |
🐧 Linux 手动安装步骤
-
下载二进制文件:从 GitHub 下载最新版本的 Docker Compose。建议先访问 GitHub releases 页面 查看最新版本号(例如
v2.40.3),然后替换下方命令中的版本号。sudo curl -L "https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/lib/docker/cli-plugins/docker-compose -
赋予执行权限:让刚下载的文件有被执行的权限。
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose -
验证安装:运行以下命令,如果正确输出版本信息,则说明安装成功。
docker compose version注意:新版本命令是
docker compose(中间没有横线)。
🚀 如何使用
使用 Docker Compose 通常遵循“三步走”的流程。
1. 定义应用环境
为你的每个服务(如 Web 应用)编写 Dockerfile,定义如何构建它自己的镜像。
2. 创建 compose.yaml 配置文件
这是最关键的一步。在项目根目录下创建一个 compose.yaml 文件,定义所有服务。以下是一个包含 Web 应用和 Redis 缓存的示例:
services:
web:
build: . # 使用当前目录下的Dockerfile构建镜像
ports:
- "8000:5000" # 将宿主机的8000端口映射到容器的5000端口
volumes:
- .:/code # 将当前目录挂载到容器的/code目录,方便开发时代码同步
redis:
image: "redis:alpine" # 直接使用Docker Hub上的Redis镜像
3. 使用 Compose 命令启动应用
在 compose.yaml 文件所在的目录下,执行以下命令来启动整个应用:
# 启动所有服务(-d 代表后台运行)
docker compose up -d
📋 常用管理命令
应用启动后,你可以通过以下命令来管理它:
| 命令 | 作用 |
|---|---|
docker compose up -d |
在后台创建并启动所有服务 |
docker compose down |
停止并删除所有容器、网络 |
docker compose stop |
停止所有运行中的服务,但保留容器 |
docker compose start |
启动已停止的服务 |
docker compose restart |
重启所有服务 |
docker compose ps |
列出当前项目中所有容器的状态 |
docker compose logs -f |
实时查看所有服务的日志输出 |
docker compose exec <服务名> bash |
进入指定服务的容器内部执行命令(如 docker compose exec web bash) |
docker compose down -v |
⚠️ 危险操作:停止并删除所有容器、网络和**数据卷**,这会清除数据库等持久化数据 |
Docker Compose 的核心价值在于将多容器应用定义为“基础设施即代码”,通过 compose.yaml 文件,应用的完整架构可以被清晰地定义、版本化管理,并实现一键部署。
希望这份指南能帮你顺利上手。如果使用中遇到具体问题,可以随时再来问我。