在容器化开发中,docker-compose 是管理多容器应用的神器。无论是本地开发调试,还是生产环境的快速部署,掌握其核心命令都能极大提升效率。本文将梳理从环境准备到日常运维的全流程常用命令,助你轻松驾驭 Docker 编排。
1. 环境准备与前置检查
在开始之前,请确保你的系统已安装 Docker 及 Docker Compose。
Windows 用户特别注意
如果你使用的是 Docker Desktop 并在 WSL 2 (Windows Subsystem for Linux) 环境下运行,请务必先确认 WSL 后端已正常启动。
打开 PowerShell 或 CMD,执行以下命令进入 WSL 环境:
wsl
注意:后续的 Docker 命令建议在 WSL 的 Linux 终端中执行,以获得最佳兼容性和性能。
2. 核心操作流程
所有操作请在包含 docker-compose.yml(或 .yaml)文件的目录下进行。
🚀 启动服务
这是最常用的命令,用于后台启动所有定义的服务。
- 标准启动(使用现有镜像):docker compose up -d注:Docker Compose V2 版本推荐使用
docker compose(无连字符),旧版本使用docker-compose。两者功能基本一致。-d参数表示 Detached 模式,即在后台运行。 - 重建并启动(当修改了
Dockerfile或需要强制重新构建镜像时):docker compose up -d –build该命令会先重新构建镜像,然后再启动容器。
👀 查看状态与日志
服务启动后,监控其运行状态是日常工作的重点。
- 查看容器运行状态:docker compose ps此命令会列出当前项目中所有容器的名称、状态、端口映射等信息。
- 查看实时日志:
- 查看所有服务的聚合日志:docker compose logs -f
- 查看特定服务的日志(将
<服务名>替换为docker-compose.yml中定义的服务名称):docker compose logs -f <服务名>
-f(follow) 参数让日志像tail -f一样实时滚动输出,按Ctrl + C退出。
🔄 服务控制
在日常开发中,我们经常需要重启某个挂掉的服务,或者停止整个环境。
- 重启特定服务:docker compose restart <服务名>适用于配置热更新或服务假死的情况,无需停止整个栈。
- 停止所有服务:docker compose down该命令会停止并移除容器、网络。默认情况下,它不会删除数据卷(Volumes),因此数据库数据通常会保留。
- 彻底清理(停止服务并删除数据卷):docker compose down -v⚠️ 高危警告:添加
-v(或--volumes) 参数后,不仅会删除容器和网络,还会删除所有关联的数据卷。这意味着数据库中的所有持久化数据将被清空!仅在需要重置开发环境或销毁测试环境时使用。
3. 命令速查表 (Cheat Sheet)
| 操作场景 | 命令 | 备注 |
|---|---|---|
| 后台启动 | docker compose up -d | 最常用 |
| 强制重建启动 | docker compose up -d --build | 修改代码或配置后 |
| 查看状态 | docker compose ps | 检查端口和运行状态 |
| 实时日志(全部) | docker compose logs -f | 排查问题必备 |
| 实时日志(单个) | docker compose logs -f <name> | 聚焦特定服务 |
| 重启单个服务 | docker compose restart <name> | 轻量级重启 |
| 停止并清理 | docker compose down | 保留数据卷 |
| 彻底销毁 | docker compose down -v | 删除数据,慎用! |
4. 最佳实践与注意事项
- 版本兼容性:
- Docker Compose V1 命令为
docker-compose(带连字符)。 - Docker Compose V2 (集成在 Docker CLI 中) 命令为
docker compose(无连字符)。 - 建议在新项目中统一使用 V2 语法,大多数现代 Docker 桌面版默认支持。
- Docker Compose V1 命令为
- 数据安全第一:
- 在执行
docker compose down -v之前,请三思!如果是生产环境或重要的本地开发数据,请先执行备份。 - 如果需要保留数据但重启环境,仅使用
docker compose down即可。
- 在执行
- 多项目隔离:
- 如果在同一台机器上运行多个相似的项目,建议使用
-p或--project-name参数指定项目名称,避免容器命名冲突:docker compose -p my-project-name up -d
- 如果在同一台机器上运行多个相似的项目,建议使用
- WSL 内存管理:
- 在 Windows 上使用 WSL 运行 Docker 时,若发现内存占用过高,可通过配置
.wslconfig文件限制 WSL 的最大内存使用量。
- 在 Windows 上使用 WSL 运行 Docker 时,若发现内存占用过高,可通过配置
结语
熟练掌握这些 Docker Compose 命令,能让你的开发和部署流程更加流畅。从一键启动到故障排查,容器编排从未如此简单。希望这篇指南能成为你手边的实用备忘录!
(本文基于 Docker Compose V2 语法编写,适用于 2026 年主流开发环境)







