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

相关推荐
测试修炼手册1 小时前
[测试工具] 用 Codex 做测试实战:从需求分析到自动化用例落地
运维·自动化·需求分析
米高梅狮子2 小时前
03.网络类服务实践
linux·运维·服务器·网络·kubernetes·centos·openstack
IpdataCloud3 小时前
稳定的企业级IP数据接口怎么选?可用性指标+离线库高可用方案
运维·网络·tcp/ip
WebGIS开发3 小时前
地信职业百科②:GIS运维
运维·gis·就业·转行
淘矿人3 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
JiaWen技术圈3 小时前
nginx 安全响应头 介绍
运维·nginx·安全
IMPYLH3 小时前
Linux 的 unexpand 命令
linux·运维·服务器·bash
万里侯4 小时前
GitOps实战:用Git管理基础设施
微服务·容器·k8s
|_⊙4 小时前
Linux 文件知识 补充
linux·运维·服务器
十六年开源服务商6 小时前
2026服务器配置优化与WordPress运维实战指南
android·运维·服务器