【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 应用到实际项目中。如果这篇文章对你有所帮助,欢迎点赞、收藏或在评论区留言交流~我们下篇文章再见!

Logo

一站式 AI 云服务平台

更多推荐