想学 docker-compose,最稳妥的入门路径是直接从 Docker 官方文档和经过验证的中文教程入手,配合实际项目练习。
先说结论:docker-compose 入门资料丰富,但建议优先看官方文档和结构清晰的实战教程,避免被过时版本误导。
- 适合:需要快速部署多容器应用的开发者和运维人员
- 先看:官方文档的 Getting Started 章节和基础 YAML 配置示例
- 建议:从简单的双服务示例开始,逐步增加复杂度
命令速用版
如果你已经安装了 Docker Compose,可以直接用以下命令快速验证环境:
docker-compose `--version`
查看帮助信息,了解可用命令:
docker-compose `--help`
在包含 docker-compose.yml 的目录下启动服务:
docker-compose up
停止并清理服务:
docker-compose down
查看运行中的容器状态:
docker-compose ps
查看服务日志:
docker-compose logs <service>
为什么会这样
docker-compose 是 Docker 官方推出的容器编排工具,核心作用是用一个 YAML 配置文件定义多容器应用,然后一条命令完成所有容器的创建、启动、停止和删除。
不用 Compose 的话,你需要手动执行多个 docker run 命令,逐个配置网络、卷、环境变量等参数。容器数量增加后,管理成本会快速上升,而且容易出错。Compose 把应用基础设施(服务、网络、存储)用配置文件管理起来,可以纳入版本控制系统,方便协作和追溯。
市面上使用较多的容器编排工具还有 Kubernetes,但 Compose 更适合单机多容器场景,学习曲线更平缓。
分步处理
第一步:确认安装状态
在终端运行 docker-compose `--version`,如果显示版本号说明已安装。如果没有安装,需要从 Docker 官网下载适用于你操作系统的版本,解压后添加到系统环境变量中。
第二步:理解配置文件结构
一个标准的 docker-compose.yml 文件包含以下核心部分:
- version:指定 Compose 文件语法版本,需与 Docker 引擎版本兼容
- services:定义服务容器,每个服务对应一个容器实例
- networks:定义容器间通信的网络
- volumes:管理数据持久化,容器删除后数据不丢失
第三步:从简单示例开始
创建一个包含两个服务的示例文件,比如 Web 服务加数据库:
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password第四步:启动并测试
在文件所在目录运行 docker-compose up,观察输出日志确认服务启动成功。然后用 docker-compose ps 查看容器状态。
第五步:逐步增加复杂度
熟悉基础用法后,可以尝试添加数据卷挂载、自定义网络、环境变量配置等功能。多环境配置时,可以使用多个 Compose 文件叠加,比如开发环境加载 override 配置。
怎么验证是否生效
启动服务后,用以下方法确认配置是否正确:
- 运行 docker-compose ps,所有服务状态应显示为 Up
- 运行 docker-compose logs <service>,查看是否有错误日志
- 访问映射的端口(如 80 端口),确认 Web 服务可访问
- 检查数据卷是否正确挂载,容器重启后数据是否保留
- 验证服务间通信,比如 Web 容器能否通过服务名访问数据库容器
如果服务启动失败,先查看日志定位错误,再检查 YAML 语法和配置参数。
常见坑
版本兼容问题
Compose 文件版本需要与 Docker 引擎版本兼容,过高或过低都可能导致解析失败。公开资料中没有看到可靠的版本对应量化数据,建议参考官方文档的版本说明。
服务名依赖
容器间通过服务名互相访问,不是容器名。配置环境变量时要注意服务名拼写一致。
数据卷清理
docker-compose down 默认不删除卷,如果需要彻底清理,要加 -v 参数。删除前确认数据是否需要保留。
端口冲突
主机端口被占用时,服务启动会失败。可以先用 netstat 或 ss 命令检查端口占用情况。
网络隔离
Compose 为项目创建默认网络,不同项目的容器默认无法通信。需要跨项目通信时要自定义网络。
参考来源
- Docker 指南⑦:docker-compose 快速入门
- Docker Compose 完全指南:从入门到实践
- Docker Compose 零基础入门
- Docker Compose 配置文件详解:docker-compose.yml 实战指南
- Docker 多容器编排:Compose 实战教程
- 小白快速上手 Docker 07 | 有关 Docker Compose 的一切
- 一键搞定容器编排!Docker Compose 企业级部署避坑手册