想入门 Docker Compose,最推荐的方式是先理解它的核心用途——用一份 YAML 文件统一管理多个容器的启动、网络和存储,适合本地开发、测试环境搭建,以及单机多服务部署场景。
先说结论:Docker Compose 是管理多容器应用的编排工具,通过 docker-compose.yml 配置文件一键启停整个应用栈,入门门槛低但需要理解服务、网络、卷三个核心概念。
- 适合:本地开发环境、测试环境、单机多服务部署
- 先看:官方文档的 YAML 配置语法和常用命令
- 建议:从单服务示例开始,逐步添加数据库、缓存等依赖服务
命令速用版
安装完成后,以下是入门阶段最常用的命令:
docker compose version # 查看版本,确认安装成功 docker compose up # 启动所有服务(前台运行) docker compose up -d # 后台启动所有服务 docker compose down # 停止并删除容器、网络 docker compose ps # 查看服务运行状态 docker compose logs # 查看所有服务日志 docker compose logs -f 服务名 # 跟踪指定服务日志
注意:新版 Docker 推荐使用 docker compose(带空格)作为插件命令,旧版使用 docker-compose(带连字符),两者功能基本一致。
为什么会这样
单独使用 docker run 部署多容器应用时,每次都要手动指定端口映射、网络、卷挂载等参数,命令长且容易出错。当应用包含 Web 服务、数据库、缓存等多个容器时,管理成本会快速上升。
Docker Compose 的核心价值在于把分散的配置集中到一个 YAML 文件中,定义服务之间的依赖关系、网络通信规则和数据持久化策略。执行一条命令就能完成所有容器的创建和启动,且配置可版本化管理,确保开发、测试环境一致性。
分步处理
第一步:安装 Docker Compose
如果已安装 Docker Desktop,Compose 通常已内置。在 Linux 系统上可通过插件方式安装:
# CentOS/RHEL 系统 yum 安装 yum install -y docker-compose-plugin # 验证安装 docker compose version
也可下载独立二进制文件安装,但插件方式更推荐,命令集成在 docker 主命令下。
第二步:编写第一个 docker-compose.yml
在项目根目录创建文件,从单服务开始:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html这个配置定义了一个 Nginx 服务,将主机 8080 端口映射到容器 80 端口,并挂载本地 html 目录。
第三步:启动并验证
# 启动服务 docker compose up -d # 查看状态 docker compose ps # 测试访问 curl http://localhost:8080
第四步:添加依赖服务
熟悉单服务后,可添加数据库等依赖:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:depends_on 控制启动顺序,volumes 确保数据库数据持久化。
怎么验证是否生效
- 服务状态:
docker compose ps显示所有服务应为running状态 - 网络连通: 容器间可通过服务名互相访问,如在 web 容器中
curl http://db:5432 - 数据持久化: 执行
docker compose down后重新启动,数据库数据应保留 - 端口映射: 主机浏览器或 curl 可访问映射端口
- 日志检查:
docker compose logs 服务名查看服务启动日志,确认无报错
常见坑
- 版本兼容性: Compose 文件版本与 Docker 引擎版本需匹配,公开资料中没有看到可靠的版本对应量化数据,建议参考官方文档
- 容器命名冲突: 指定
container_name后无法使用scale扩展服务实例数 - 网络隔离: 不同 Compose 项目的容器默认不在同一网络,无法直接通信
- 卷权限问题: 挂载主机目录时需注意文件权限,数据库类服务可能因权限拒绝启动
- 命令混用: 不要混用
docker compose和docker-compose,同一项目保持命令一致 - 环境差异: 开发、生产环境建议使用不同配置文件(如
docker-compose.prod.yml),通过-f参数指定
参考来源
- Docker 官方文档 - Use Docker Compose,https://docs.docker.com/compose/
- 阿里云开发者社区 - docker-compose 快速入门及实战(2022 年 10 月 23 日发布)
- CSDN 博客 - docker compose 实战指南:从入门到生产(2025 年 12 月 19 日发布)
- 云原生之 Docker 篇 Docker Compose 介绍及使用入门(2022 年 10 月 11 日发布)