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

相关推荐
Dovis(誓平步青云)1 天前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
迎仔1 天前
05-计算设备运维进阶:算力中心的设备医生
运维
小Pawn爷1 天前
3.Dockerfile
docker
CodeGolang1 天前
Docker容器化部署Zabbix监控系统完整指南
docker·容器·zabbix
石去皿1 天前
【嵌入式就业10】Linux内核深度解析:从启动流程到驱动框架的工业级实践
linux·运维·服务器
Wpa.wk1 天前
接口自动化 - 多环境统一文件配置 +多响应统一转换处理
运维·服务器·测试工具·自动化·接口自动化·统一配置
Trouvaille ~1 天前
【Linux】应用层协议设计实战(二):Jsoncpp序列化与完整实现
linux·运维·服务器·网络·c++·json·应用层
是枚小菜鸡儿吖1 天前
从 0 到 1 生成自定义算子:CANN + AIGC 的自动化工作流
运维·自动化·aigc
考琪1 天前
Nginx打印变量到log方法
java·运维·nginx
SAP工博科技1 天前
SAP 公有云 ERP 多工厂多生产线数据统一管理技术实现解析
大数据·运维·人工智能