docker compose简介

这个问题问得非常好 👍
Docker Compose 是 Docker 里"从能跑一个容器 → 能跑一整套系统"的关键工具。

我按 人话 → 例子 → 怎么用 给你一次讲透。


一、Docker Compose 是什么?(一句话版)

Docker Compose = 用一个 yml 文件,定义并启动多个 Docker 容器

它解决的问题是:

  • 不只跑一个容器

  • 而是:

    • Web

    • API

    • 数据库

    • Redis

    • MQ

      👉 一整套服务,一条命令启动


二、docker compose.yml 是干嘛的?

docker compose.yml = 容器"编排说明书"

它告诉 Docker 三件事:

1️⃣ 有哪些服务(containers)

2️⃣ 每个服务怎么启动

3️⃣ 服务之间怎么连


三、没有 Compose 时你会怎样(痛苦版)

比如你要启动一个系统:

  • MySQL

  • Redis

  • Java 后端

  • Nginx

你得手敲:

复制代码
docker run -d --name mysql -p 3306:3306 ...
docker run -d --name redis -p 6379:6379 ...
docker run -d --name backend ...
docker run -d --name nginx ...

❌ 参数多

❌ 顺序容易错

❌ 停止/重启麻烦


四、有 docker compose.yml 之后(爽版)

复制代码
version: "3.9"

services:
  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - mysql-data:/var/lib/mysql

  redis:
    image: redis:7
    ports:
      - "6379:6379"

  backend:
    image: my-backend:latest
    depends_on:
      - mysql
      - redis

volumes:
  mysql-data:

然后只需要一句:

复制代码
docker compose up -d

🎉 全部跑起来


五、docker compose.yml 能做什么(核心能力)

1️⃣ 定义多个服务

复制代码
services:
  app:
  db:
  cache:

2️⃣ 定义端口映射

复制代码
ports:
  - "8080:8080"

3️⃣ 定义环境变量

复制代码
environment:
  SPRING_PROFILES_ACTIVE: dev

4️⃣ 定义数据持久化

复制代码
volumes:
  - ./data:/data

5️⃣ 定义启动顺序

复制代码
depends_on:
  - mysql

6️⃣ 定义网络(默认就有)

复制代码
networks:
  - backend-net

networks: - backend-net 的作用是:
把这个容器加入到名为 backend-net 的 Docker 网络里

加入同一个 network 的容器:

  • 可以 直接通过服务名互相访问

  • 网络隔离更安全

  • 端口不必暴露到宿主机

Docker 网络 = 容器的"虚拟局域网"

  • 每个 network 都是一个独立的子网

  • 容器在里面有:

    • 私有 IP

    • 内置 DNS

  • 外界(宿主机 / 其他网络)默认访问不到

且Docker 在 network 里自带 DNS:

mysql → 172.20.0.3

backend → 172.20.0.4


六、怎么使用 docker compose.yml(实战步骤)

1️⃣ 准备文件

在项目目录创建:

复制代码
docker-compose.yml

2️⃣ 启动服务

复制代码
docker compose up

后台运行:

复制代码
docker compose up -d

3️⃣ 查看状态

复制代码
docker compose ps

4️⃣ 看日志

复制代码
docker compose logs

指定服务:

复制代码
docker compose logs mysql

5️⃣ 停止并删除容器

复制代码
docker compose down

七、常见命令速查表

命令 作用
docker compose up 启动
docker compose up -d 后台启动
docker compose down 停止并删除
docker compose restart 重启
docker compose ps 查看状态
docker compose logs 查看日志
docker compose exec app bash 进容器

八、docker compose vs docker-compose(注意)

写法 说明
docker compose ✅ 新版(推荐)
docker-compose ⚠️ 旧版

👉 新 Docker 已经内置 compose


九、一句话总结

docker compose.yml = 描述一整套系统的配置文件
docker compose = 按配置一键启动所有容器

相关推荐
筱_智4 分钟前
Docker学习-超详细-通俗易懂(从入门到精通)
学习·docker·容器
搞科研的小刘选手8 分钟前
【高届数传感机电会议】第十二届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2026)
运维·人工智能·自动化·控制·传感器·传感·机电
EAIReport27 分钟前
Docker与K8s核心解析:共同性、差异性及实战适配指南
docker·容器·kubernetes
李景琰30 分钟前
Debian12安装配置Mqtt之EMQX
linux·运维·服务器
SimLine芯见31 分钟前
专为空管环境打造的KVM切换器,满足主备自动化高速无缝切换需求
运维·自动化
长安链开源社区35 分钟前
动手开发 | 如何通过k8s部署长安链
云原生·容器·kubernetes·区块链
不做无法实现的梦~38 分钟前
PX4 机载电脑 Linux 环境安装、串口、网络、ROS 完整配置
linux·运维·网络
嵌入式×边缘AI:打怪升级日志38 分钟前
嵌入式Linux开发(了解交叉编译工具链的组成)
java·linux·运维
IT界的老黄牛42 分钟前
停电后 Redis 集群两节点起不来:fix 完还报 Bad file format?多部分 AOF 修复的正确姿势
运维·redis·缓存
接着奏乐接着舞43 分钟前
3D Tiles tileset.jso 数据格式
运维·服务器·3d