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

相关推荐
七夜zippoe5 分钟前
DolphinDB 运维工具实战:自动化脚本体系设计与落地(2.0.x)
运维·dolphindb·自动化脚本·体系设计·体系落地
玉&心12 分钟前
在Docker中部署前端和后端的实现
运维·docker·容器
wdfk_prog31 分钟前
Docker 常用语法与命令:CLI、Dockerfile 与 Compose 速查
运维·docker·容器
无敌糖果1 小时前
K8S network namespace错误分析
docker·容器·kubernetes
skywalk81631 小时前
通过下载Ubuntu ova文件在Virtual Box快速安装ubuntu
linux·运维·ubuntu·virtualbox
姚不倒1 小时前
HAProxy 系列(四):多中间件统一 VIP 入口 — 架构模式与最佳实践
运维·中间件·架构·haproxy
happymade1 小时前
7000 台网络设备批量纳管 & 自动拓扑生成实战——MSRM3 完整操作流程与关键要点复盘
运维·服务器·网络·zabbix·grafana·msrm3
郝开1 小时前
Docker Compose 模块化多环境配置规范指南:示例搭建Kibana 9.4.2
docker·容器·kibana
做萤石二次开发的哈哈1 小时前
萤石蓝海 AIoT 一站式工作台:海康LCD会议平板接入,多端大屏运维应用一站生成
运维·物联网·电脑·萤石开放平台·会议室管理·蓝海aiot一站式工作台·otap物模型
运维老郭1 小时前
Prometheus 监控 K8s 从入门到入坑:工作原理 + 部署实操 + 避坑指南
云原生·容器·kubernetes