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

相关推荐
x²+(y-√³x²)²=11 小时前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
世人万千丶1 小时前
去重插入与超限淘汰:ArkTS 实现鸿蒙搜索历史的 LIMIT 艺术
运维·服务器·学习·华为·harmonyos·鸿蒙
未来之窗软件服务1 小时前
企业自动化运营-电子合同预览-东方仙盟
运维·自动化·仙盟创梦ide·东方仙盟
流烟默1 小时前
Kubernetes Service 完全指南:从原理到生产实战
云原生·容器·kubernetes
airobotcn1 小时前
智能巡检平台容器化部署:Docker+K8s在工业边缘的实践
人工智能·docker·容器·kubernetes·机器人·自动化
Android系统攻城狮1 小时前
Linux PipeWire深度解析之pw_properties_iterate调用流程与实战(六十五)
linux·运维·服务器·音频进阶·pipewire音频进阶
研华科技Advantech2 小时前
案例 | 从离线巡检到在线看护:研华PHM解决方案赋能石油钻井平台智能运维
运维·人工智能·边缘计算
難釋懷2 小时前
Nginx主动健康检查
运维·nginx
ITyunwei09873 小时前
内存溢出报错,实战处理记录
运维·服务器·企业微信
Elastic 中国社区官方博客3 小时前
你的 AI agent 不需要你的 API 密钥:使用 OAuth 2.1 对 Elasticsearch MCP 服务器进行身份验证
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索