Docker Compose 入门:一个 YAML 管理全部容器

举报
yd_233118316 发表于 2026/11/08 06:02:55 2026/11/08
【摘要】 多容器项目还在敲一长串 docker run?docker-compose.yml 三要素(services/networks/volumes)+ 服务名互连,一条命令起停全家桶。

上次聊了镜像分层,这次讲讲多容器编排。当你开始写"先起数据库、再起后端、再起前端"这样的项目时,敲一长串 docker run 就该换 Docker Compose 了。

一、一个文件管所有容器

Compose 把所有容器的配置写进一个 docker-compose.yml:

services:
  web:
    image: myapp:latest
    ports:
      - "8080:80"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

一条命令全启动:docker compose up -d;全停止:docker compose down。加 -d 是后台运行。

二、容器之间怎么通信

Compose 会自动创建一个网络,服务名就是主机名。比如 web 容器里连数据库,主机名直接写 db:

# 应用配置里不用写 IP
DB_HOST=db
DB_PORT=3306

depends_on 只保证启动顺序,不保证数据库"已就绪"——应用要有重试逻辑,或用 healthcheck。

三、数据持久化用 volumes

容器删了数据就没了。上面例子把 MySQL 数据目录挂到命名卷 db-data,down 不会删卷,要连卷一起删得用 down -v——这个区别很重要。

小结

Compose 三要素:services(容器)、networks(自动创建)、volumes(数据)。本地开发环境用它管理,一条命令起停全家桶。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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