Docker Compose 简介
Docker Compose 是一个用于定义和运行多容器 Docker 应用 的工具。你可以用一个 docker-compose.yml 文件来配置应用的所有服务,然后用一条命令启动所有容器。
安装
安装 Docker Compose 主要有两种主流方法,我会分别介绍。目前推荐使用 Compose V2 (即 docker compose 插件形式),它已经集成在 Docker CLI 中,使用起来更方便。
通过系统包管理器安装(推荐)这是最简单、最稳定的方法,Compose 会作为 Docker 的插件安装 。
Ubuntu/Debian 系统
bash
# 1. 更新包索引
sudo apt-get update
# 2. 安装 Docker Compose 插件
# 在 Ubuntu 22.04 及更高版本中,可以直接安装 docker-compose-v2 包
sudo apt-get install docker-compose-plugin
# 或者安装 docker-compose(系统会自动选择 v2 版本)
# sudo apt-get install docker-compose
CentOS/RHEL/Fedora 系统
bash
# 1. 更新包索引
sudo yum update
# 2. 安装 Docker Compose 插件
sudo yum install docker-compose-plugin
验证安装
安装完成后,通过以下命令验证:
bash
# 注意:V2 版本使用的是空格,不是连字符
docker compose version
你应该会看到类似 Docker Compose version v2.29.2 的输出 。
版本区别
docker-compose(带连字符):Compose V1,Python 编写,已停止维护docker compose(空格):Compose V2,Go 编写,作为 Docker CLI 插件,推荐使用
免 sudo 使用(可选)
如果你想避免每次使用 Docker 命令都加 sudo,可以将当前用户加入 docker 组:
bash
sudo usermod -aG docker $USER
newgrp docker # 立即生效,或重新登录
核心概念
| 概念 | 说明 |
|---|---|
| 服务 (Service) | 一个容器就是一个服务(如 web 服务、数据库服务) |
| 项目 (Project) | 由一组关联的服务组成的完整应用 |
基本使用流程
1. 创建 docker-compose.yml 文件
yaml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
2. 常用命令
| 命令 | 作用 |
|---|---|
docker-compose up |
创建并启动所有容器(前台运行) |
docker-compose up -d |
后台模式启动所有容器 |
docker-compose down |
停止并删除所有容器、网络 |
docker-compose ps |
查看当前项目中的容器状态 |
docker-compose logs |
查看容器日志 |
docker-compose exec web bash |
进入指定服务(web)的容器 |
docker-compose stop |
停止服务(不删除容器) |
docker-compose start |
启动已停止的服务 |
docker-compose restart |
重启服务 |
实际示例
启动一个 WordPress 项目
yaml
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wpdb
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wpdb
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
MYSQL_ROOT_PASSWORD: root123
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
bash
# 启动
docker-compose up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止并清理
docker-compose down -v # -v 会同时删除数据卷
核心优势
- 简化操作:一条命令启动整个应用栈
- 配置即代码:环境配置版本化管理
- 依赖管理 :
depends_on控制服务启动顺序 - 环境隔离:不同项目用不同 compose 文件,互不干扰
一句话总结 :Docker Compose 让你不用写一堆 docker run 命令,一个 YAML 文件 + 一条 up 命令就搞定整套环境。