docker-compose怎么入门?

文章导读
想入门 Docker Compose,最推荐的方式是先理解它的核心用途——用一份 YAML 文件统一管理多个容器的启动、网络和存储,适合本地开发、测试环境搭建,以及单机多服务部署场景。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

想入门 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-compose怎么入门?

为什么会这样

单独使用 docker run 部署多容器应用时,每次都要手动指定端口映射、网络、卷挂载等参数,命令长且容易出错。当应用包含 Web 服务、数据库、缓存等多个容器时,管理成本会快速上升。

Docker Compose 的核心价值在于把分散的配置集中到一个 YAML 文件中,定义服务之间的依赖关系、网络通信规则和数据持久化策略。执行一条命令就能完成所有容器的创建和启动,且配置可版本化管理,确保开发、测试环境一致性。

分步处理

第一步:安装 Docker Compose

如果已安装 Docker Desktop,Compose 通常已内置。在 Linux 系统上可通过插件方式安装:

docker-compose怎么入门?
# CentOS/RHEL 系统 yum 安装
yum install -y docker-compose-plugin

# 验证安装
docker compose version

也可下载独立二进制文件安装,但插件方式更推荐,命令集成在 docker 主命令下。

第二步:编写第一个 docker-compose.yml

在项目根目录创建文件,从单服务开始:

docker-compose怎么入门?
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 composedocker-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 日发布)