侧边栏壁纸
博主头像
CloudServerBox 博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 31 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker Compose 全面指南(2026 修订版)

CloudServerBox
2026-01-27 / 0 评论 / 0 点赞 / 7 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-27,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

分为 13 个部分:简介 → 核心概念 → 版本说明 → 安装方法 → 卸载方法 → 快速示例 → docker-compose.yml 结构 → 常用命令详解 → 高级选项 → 日常场景 → 扩容与多环境 → 调试技巧 → 总结


🐳 Docker Compose 全指南(2026 修订版)


1️⃣ 简介 💡

Docker Compose 是 Docker 官方推出的编排(Orchestration)工具,可以让你用一个命令启动一整套多容器应用 它的定位是:

“定义并运行多个 Docker 容器应用”

背景:

  • 单个容器可以用 Dockerfile 定义并运行 ✅

  • 但很多软件系统需要 多个容器协作(Web + 数据库 + 缓存 + Nginx 负载均衡)

  • Compose 就是用 一个 YAML 文件 来定义 这些容器的关系、参数、网络,然后一次性启动、停止、管理。


2️⃣ 核心概念 🧩

  • 服务 (Service):项目的某一个功能模块对应的容器(可以是多个实例),如 web 服务、db 服务。

  • 项目 (Project):一组关联服务构成的业务完整单元。 👉 在 docker-compose.yml 中定义。

关系图:

项目 (Project)
 ├─ web (Service)
 ├─ db (Service)
 └─ redis (Service)

3️⃣ Compose V2 🔄

🐹 最新版本 Compose V2 已由 Go 语言重写,并集成到 Docker CLI:

docker compose up

而老版(Python 写的)是:

docker-compose up

📌 区别

  • V2 更快、更稳定

  • Docker Desktop(Mac/Windows)自带 V2

  • Linux 用户可手动安装


4️⃣ 安装方法 ⚙️

支持平台:

  • Linux 🐧

  • macOS 🍎

  • Windows 10 💻

📦 Pip 安装(ARM 架构常用)

sudo pip install -U docker-compose

适合树莓派等 ARM 设备

💽 二进制包安装(Linux 常用)

sudo curl -L \
https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) \
> /usr/local/bin/docker-compose
​
sudo chmod +x /usr/local/bin/docker-compose

国内加速下载:

sudo curl -L \
https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) \
> /usr/local/bin/docker-compose

🐚 Bash 命令补全

curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/bash/docker-compose \
> /etc/bash_completion.d/docker-compose

5️⃣ 卸载方法 🗑

  • 二进制安装删除:

sudo rm /usr/local/bin/docker-compose
  • Pip 安装删除:

sudo pip uninstall docker-compose

6️⃣ 快速使用示例 🚀

我们用 Flask + Redis 创建一个记录页面访问次数的 Web 应用。

📂 项目目录结构

myapp/
 ├── app.py
 ├── Dockerfile
 └── docker-compose.yml

📝 app.py

from flask import Flask
from redis import Redis
​
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
​
@app.route('/')
def hello():
    count = redis.incr('hits')
    return f'Hello World! 页面已访问 {count} 次。\n'
​
if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

🐳 Dockerfile

FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]

📜 docker-compose.yml

version: '3'
services:
​
  web:
    build: .
    ports:
     - "5000:5000"
​
  redis:
    image: "redis:alpine"

▶️ 启动

docker-compose up

访问 localhost:5000 ➡ 刷新页面计数+1。


7️⃣ docker-compose.yml 结构 🧾

version: '3'
services:
  service_name:
    build: .
    image: redis:alpine
    environment:
      - VAR=value
    ports:
      - "5000:5000"
    volumes:
      - ./data:/var/lib/mysql
    networks:
      - backend
networks:
  backend:

📌 核心字段:

  • services:定义容器服务

  • volumes:数据持久化

  • ports:端口映射

  • environment:环境变量

  • networks:容器网络


8️⃣ 常用命令详解 🛠

命令

用途

build

构建镜像

up

启动全部服务

down

停止并删除

logs

查看日志

ps

查看服务容器列表

exec

进入容器

restart

重启服务

pull

拉取镜像

scale

扩容


9️⃣ 高级选项 🔧

  • -d 👉 后台运行

  • --no-deps 👉 不启动依赖容器

  • --build 👉 强制重新构建镜像

  • --force-recreate 👉 强制重建容器

  • --no-recreate 👉 已有容器不重建


🔟 日常场景 🎯

  • Web开发:前后端分离项目

  • 数据库测试:临时启动 MySQL/PostgreSQL

  • 微服务调试:快速启动依赖服务


1️⃣1️⃣ 扩容与多环境 📦

扩容:

docker-compose scale web=3 db=2

多环境:

docker-compose -f docker-compose.yml -f prod.yml up -d

1️⃣2️⃣ 调试技巧 🧪

  • 前台运行:

docker-compose up
  • 单服务调试:

docker-compose up --no-deps -d web
  • 查看容器进程:

docker-compose top

1️⃣3️⃣ 总结 📌

Docker Compose 是多容器管理的神兵利器:

  • 一个文件 定义完整应用结构

  • 一条命令 启动和停止全部服务

  • 跨平台(Linux/macOS/Windows)

  • 支持扩容、调试、日志查看


0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区