docker compose 的简单使用

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 会同时删除数据卷

核心优势

  1. 简化操作:一条命令启动整个应用栈
  2. 配置即代码:环境配置版本化管理
  3. 依赖管理depends_on 控制服务启动顺序
  4. 环境隔离:不同项目用不同 compose 文件,互不干扰

一句话总结 :Docker Compose 让你不用写一堆 docker run 命令,一个 YAML 文件 + 一条 up 命令就搞定整套环境。

相关推荐
weixin_6042366722 分钟前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春1 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
梦梦代码精1 小时前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
AI智图坊1 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
鹤落晴春4 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
极客先躯5 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
云计算磊哥@6 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
天天进步20156 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
My is 李豆6 小时前
CentOS 7 安装 Docker 完整教程(含 docker-compose 插件)
docker·eureka·centos
极客先躯7 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷