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 命令就搞定整套环境。

相关推荐
阿里云大数据AI技术18 小时前
阿里云 EMR AI 助手正式发布:从问答工具到全栈智能运维助手
运维·人工智能
辉的技术笔记19 小时前
Dify 自部署为什么跑不动?6 层瓶颈诊断法教你定位
docker
SkyWalking中文站2 天前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵2 天前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵2 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位2 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
小猿姐2 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
SkyWalking中文站3 天前
认识 Horizon UI · 5/17:3D 基础设施地图
运维·监控·自动化运维
SkyWalking中文站4 天前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ4 天前
Kubeneters HA Cluster部署
运维