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 = 按配置一键启动所有容器

相关推荐
ELI_He9992 小时前
gpg使用记录
linux·运维·服务器
zzh_my2 小时前
centos yum 安装软件报错
linux·运维·centos
Lim小刘2 小时前
深度实践:从“手动排障”到“对话诊断”,构建基于 GenAI 的 K8s 智能运维平台
云原生·容器·kubernetes
rustfs2 小时前
如何将 Minio DirectPV 配置为 RustFS 存储后端?
分布式·docker·云原生·rust
杰克崔2 小时前
内核里的__private变量的使用及sparse
linux·运维·服务器·车载系统
每次学一点2 小时前
如何将网吧电脑加入ZeroTier虚拟局域网
运维·服务器·网络
很㗊2 小时前
Linux --- tar命令常见用法
linux·运维·服务器
2501_941329722 小时前
气压表智能读数检测:基于YOLOv8的指针与刻度识别实现自动化读数
运维·yolo·自动化
RisunJan2 小时前
Linux命令-ld(将目标文件连接为可执行程序)
linux·运维·服务器