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

相关推荐
cyw89981 小时前
docker 安装 ollama 并运行
运维·docker·容器
码luffyliu2 小时前
K8s 核心知识点详解:Pod、NAT 与 Osim 隔离环境的实际应用
云原生·容器·kubernetes
ljh5746491192 小时前
chomd 命令的解释和常用用法和高级用法
linux·运维·服务器
灰阳阳2 小时前
Docker-网络类型详解
网络·docker·容器
Johnstons2 小时前
当网络运维遇上全流量回溯:一次关于「看得见」的实践
运维·网络
zzh0812 小时前
web技术与nginx网站环境部署
运维·前端·nginx
天使之翼2 小时前
Win11 Docker 使用指南(WSL2 后端,保姆级)附汉化教程
docker·容器·win11·wsl
人间打气筒(Ada)2 小时前
zabbix报警多媒介(企业微信、钉钉)
运维·钉钉·企业微信·zabbix·监控·告警媒介
一水鉴天2 小时前
整体设计的自动化部署完整方案设计与程序实现 (完善版)20260311 之2 (豆包助手)
运维·人工智能·自动化