Docker Compose入门指南:多容器编排实战

举报
yd_248750836 发表于 2026/10/29 07:27:36 2026/10/29
【摘要】 Docker Compose是Docker官方提供的多容器编排工具,通过一个YAML文件定义和管理多个容器的生命周期。相比手动使用docker run启动多个容器,Compose极大简化了开发和部署流程。一、为什么需要Docker Compose在实际项目中,一个应用通常包含多个服务:Web应用、数据库、缓存、消息队列等。如果用docker run逐个启动,需要手动管理网络、挂载卷、依赖顺序...

Docker Compose是Docker官方提供的多容器编排工具,通过一个YAML文件定义和管理多个容器的生命周期。相比手动使用docker run启动多个容器,Compose极大简化了开发和部署流程。


一、为什么需要Docker Compose


在实际项目中,一个应用通常包含多个服务:Web应用、数据库、缓存、消息队列等。如果用docker run逐个启动,需要手动管理网络、挂载卷、依赖顺序,非常繁琐。Docker Compose解决了这个问题:

- 一个文件定义所有服务

- 一键启动全部服务

- 服务间自动通过服务名通信

- 支持环境变量和配置覆盖


二、安装Docker Compose


Linux上单独安装:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose


验证安装:

docker-compose --version


注意:Docker Desktop已内置Compose插件,无需单独安装。


三、第一个docker-compose.yml


创建项目目录并编写docker-compose.yml:


version: '3.8'


services:

  web:

    image: nginx:alpine

    ports:

      - "8080:80"

    depends_on:

      - app


  app:

    build: .

    environment:

      - DB_HOST=db

    depends_on:

      - db


  db:

    image: mysql:8.0

    environment:

      MYSQL_ROOT_PASSWORD: your_password

      MYSQL_DATABASE: myapp

    volumes:

      - db_data:/var/lib/mysql


volumes:

  db_data:


四、常用命令


启动所有服务:

docker-compose up -d

# -d 后台运行


查看服务状态:

docker-compose ps


查看日志:

docker-compose logs -f app


停止并删除容器:

docker-compose down

# -v 同时删除数据卷


重新构建:

docker-compose build

docker-compose up -d --build


进入容器:

docker-compose exec db bash


五、核心概念详解


1. services段

定义各个服务(容器),每个服务对应一个容器。


2. image vs build

- image:直接使用已有镜像

- build:从Dockerfile构建镜像


3. ports与expose

- ports:映射到宿主机端口,外部可访问

- expose:仅服务间内部访问


4. depends_on

控制启动顺序,但不等待服务完全就绪(只等待容器启动)。


5. volumes

命名卷持久化数据,容器删除后数据保留。


6. environment

设置环境变量,也可用.env文件自动加载。


六、实际项目示例


以一个Node.js + Redis应用为例:


version: '3.8'

services:

  app:

    build: .

    ports:

      - "3000:3000"

    environment:

      - REDIS_HOST=redis

      - REDIS_PORT=6379

    restart: always

  redis:

    image: redis:alpine

    restart: always


七、最佳实践


1. 不要在生产环境用latest标签,锁定具体版本

2. 用.env文件管理敏感配置,不提交到Git

3. 开发和生产用不同compose文件覆盖配置

4. 合理使用restart策略(always/unless-stopped)

5. 用docker-compose down -v清理测试环境


总结


Docker Compose让多容器应用的管理变得简单。掌握services、volumes、networks三个核心概念和up/down/logs三个常用命令,就能应对大多数开发场景。生产环境可进一步扩展到Swarm或Kubernetes。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。