【Docker Compose】一文搞懂 Docker Compose,轻松管理复杂容器服务
在日常开发中,我们常常需要同时启动多个容器服务,例如 Web 服务、数据库和缓存系统。手动运行多个 Docker 命令不仅繁琐,也不易维护。本文将带你快速上手 Docker Compose —— 一个用于定义和管理多容器应用的强大工具。通过一个简单的 docker-compose.yml 文件,你可以用一条命令轻松启动、关闭和管理多个服务。文章内容包括 Docker Compose V2 的安装验
【Docker入门必看】 零基础快速入门Docker :从安装到实战,一篇搞定!-CSDN博客
【Dockerfile 】从零开始学Dockerfile:构建自定义镜像与最佳实践-CSDN博客
【BuildKit 入门与实践】如何用 BuildKit 高效优化 Dockerfile的构建过程-CSDN博客
在实际开发中,通常需要同时启动多个容器服务,例如 Web 服务、数据库或缓存系统等。与其手动运行多个 docker run 命令,不如使用 Docker Compose,通过一个 YAML 文件就能轻松管理所有服务。本文将帮助你快速上手 Docker Compose,并进行实战项目。
1. 什么是 Docker Compose?
Docker Compose 是一个定义和运行多容器 Docker 应用的工具。我们只需在一个 docker-compose.yml 文件中配置好应用程序需要的所有服务,执行一条命令 docker-compose up ,即可根据 YML 文件配置创建并启动所有容器。
2. 安装验证 Docker Compose V2
注:从 Docker 20.10.13 起,Docker Compose V2 已默认集成在 Docker 中。Linux 用户无需手动安装,除非使用的是较旧版本。
因此,大多数用户安装好 Docker 后,已经可以直接使用 Docker Compose。
1)查看 Docker Compose 是否可用
docker compose version
如果你看到类似如下输出,说明 Docker Compose 已集成并可用:

3. Docker Compose V2 常用命令
| 命令 | 说明 |
|---|---|
| docker compose up | 构建并启动所有服务。默认会在前台输出日志 |
| docker compose up -d | 构建并后台启动所有服务 |
| docker compose down | 停止并清除容器、网络、卷等(如果使用了 --volumes 会删除卷) |
| docker compose ps | 显示服务容器状态 |
| docker compose logs -f | 实时追踪日志(-f 表示 follow,跟随日志) |
| docker compose exec <服务名> <命令> | 在指定服务的容器中执行命令(容器需在运行中) |
| docker compose build | 构建或重新构建服务镜像 |
| docker compose config | 检查并显示合并后的配置文件,确认 YAML 配置是否正确 |
| docker compose restart | 重启一个或多个服务 |
4. Docker Compose 文件结构详解(docker-compose.yml)
在使用 Docker Compose 管理多容器应用时,核心配置文件就是 docker-compose.yml。
一个标准的 docker-compose.yml 文件通常包含以下三大部分:
-
version :指定 Compose 文件使用的版本(最新版本可选,推荐使用最新稳定版本)
-
services:定义应用中的服务(即容器,至少定义一个服务)
-
networks:配置自定义网络(可选但常用)
version: '3.8' # 推荐使用最新的 3.x 版本
services:
web:
image: nginx
ports:
- "8080:80" # 映射宿主机 8080 端口到容器的 80 端口
networks:
- frontend
networks:
frontend:
driver: bridge # 使用 bridge 驱动创建自定义网络
常用字段解释
| 字段 | 说明 |
|---|---|
services |
定义所有要运行的服务,每个服务对应一个独立的容器 |
image |
指定服务使用的镜像名称(可来自本地或远程仓库) |
build |
指定 Dockerfile 路径,自动构建镜像 |
ports |
端口映射(格式为 宿主端口:容器端口) |
volumes |
挂载卷,将宿主机路径映射到容器内部路径(格式为 宿主端口:容器端口) |
environment |
设置环境变量,可为应用配置运行参数 |
depends_on |
指定服务之间的依赖关系(例如:web 依赖数据库服务) |
networks |
指定服务所连接的自定义网络 |
注:YAML 格式要求严格,请注意缩进(使用空格,不使用 Tab)。
5. 适合初学者上手的 Python + Docker Compose 实战
5.1 项目介绍
接下来我们将运行一个简单的 Python 脚本,在 Docker 容器中输出一句话。
5.2 项目结构说明
python_docker_demo/
│
├── hello.py ← Python 脚本(你写的逻辑)
├── Dockerfile ← 构建 Python 镜像
└── docker-compose.yml ← 用于启动服务
⚙️ 环境要求:你已经安装好了 Docker 和 docker-compose
5.3 项目步骤
✅ 第一步:创建项目文件夹和目录结构
# 1.打开终端
# 2. 输入以下命令创建项目文件夹python_docker_demo并进入
mkdir -p ~/python_docker_demo
cd ~/python_docker_demo
✅ 第二步:写一个简单的 Python 脚本
在 python_docker_demo/ 目录下创建 hello.py 文件:
# hello.py
from datetime import datetime
print("你好,这是运行在 Docker 容器中的 Python 脚本!")
print("当前时间是:", datetime.now())
✅ 第三步:创建 Dockerfile
继续在 python_docker_demo/ 目录下创建 Dockerfile
# 使用官方 Python 镜像作为基础镜像
FROM python:3.10-slim
# 设置工作目录
WORKDIR /app
# 把当前目录下的 hello.py 复制到容器中
COPY hello.py .
# 设置容器启动时运行的命令
CMD ["python", "hello.py"]
✅ 第四步:创建 docker-compose.yml 文件
services:
hello_service:
build: .
container_name: python_hello
这个文件作用:
- 定义了一个叫 hello_service 的服务
- 告诉 Docker Compose:使用当前目录下的 Dockerfile 构建镜像
- 创建名为 python_hello 的容器
✅ 第五步:运行服务
回到终端,运行:
# 先构建镜像,然后自动运行容器
docker compose up --build
你应该会看到如下输出:
你好,这是运行在 Docker 容器中的 Python 脚本!
当前时间是: 2025-05-04 18:04:55.184857
运行结果示例:
✅ 第六步:关闭容器
脚本运行完后容器会自动退出(因为任务执行完毕)。但你可以用下面命令确保干净关闭:
docker compose down
希望本文能帮助你更好地理解并将 Docker Compose 应用到实际项目中。如果这篇文章对你有所帮助,欢迎点赞、收藏或在评论区留言交流~我们下篇文章再见!
更多推荐




所有评论(0)