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

相关推荐
失伟12 小时前
Stratovirt安装及使用
运维·虚拟化
萌萌哒草头将军12 小时前
CloudDock(云仓):新一代开源NAS网络代理工具
服务器·网络协议·docker
捧月华如13 小时前
Linux 系统性能压测工具全景指南(含工程实战)
linux·运维·服务器
s19134838482d13 小时前
vlan实验报告
运维·服务器·网络
想唱rap13 小时前
线程的同步与互斥
linux·运维·服务器·数据库·mysql
格林威14 小时前
SSD 写入速度测试命令(Linux)(基于工业相机高速存储)
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
勇闯逆流河14 小时前
【LInux】linux控制(进程替换,自主shell的实现详解)
linux·运维·服务器
正经教主14 小时前
【docker基础】0、系统学习docker之总计划
学习·docker·容器
Yang三少喜欢撸铁14 小时前
【Centos7通过kubeadm方式部署kubernetes1.30版本【一主两从】】
docker·kubernetes·container
IMPYLH14 小时前
Linux 的 ls 命令
linux·运维·服务器·bash