Docker Compose

Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过一个 YAML 文件(通常命名为 docker-compose.yml)来配置应用程序的服务、网络和卷等资源,从而简化多容器应用的部署和管理。

  • Docker Compose 依赖于 Docker 引擎运行。
  • 需要先安装 Docker 才能使用 Docker Compose。

相关文档:Get started with Docker Compose菜鸟教程


Compose插件

在 Windows 和 macOS 上,安装 Docker Desktop 时会自动安装 Docker Compose。对于 Linux 用户,从 Docker Engine 20.10.0 版本开始,默认集成了 Docker Compose 插件(即 docker compose 命令,没有连字符)。可以通过以下命令确认是否已集成 Compose 插件:

bash
docker compose version

官方推荐使用 Docker Compose 插件(docker compose),因为它是未来发展的方向,并且完全集成到了 Docker CLI 中。独立版本的 docker-compose 工具正在逐步被淘汰,仅用于向后兼容的目的。

特性 Docker Compose 插件 Docker Compose 独立版本
命令格式 docker compose(无连字符) docker-compose(有连字符)
集成方式 集成到 Docker CLI 独立二进制文件
安装方式 随 Docker Engine 自动安装 需要单独安装
推荐程度 官方推荐,未来主推方向 逐步淘汰,仅用于向后兼容
兼容性 支持 Docker 最新功能(如 BuildKit) 功能更新较慢

若需要安装独立版本的 Docker Compose 可参照文档:Install the Docker Compose standalone


部署WordPress

以下是一个简单的 docker-compose.yml 文件示例,用于启动一个包含 WordPress 和 MySQL 的应用:

yaml
version: '3.8'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db

volumes:
  db_data:

docker-compose.yml 文件所在目录下运行以下命令以启动服务:

bash
docker compose up

使用 -d 参数可以在后台运行:

bash
docker compose up -d

Compose常用命令

命令 描述
docker compose up 启动服务。
docker compose down 停止并删除服务。
docker compose ps 查看运行中的容器状态。
docker compose logs 查看服务日志。
docker compose build 构建自定义镜像。
docker compose exec 在运行中的容器中执行命令。
docker compose pull 拉取服务所需的镜像。
docker compose restart 重启服务。

查看运行状态:

bash
docker compose ps

停止服务,使用 -v 参数可以删除关联的卷:

bash
docker compose down -v

查看日志:

bash
docker compose logs

重启服务:

bash
docker compose restart

构建自定义镜像,如果服务使用本地 Dockerfile,可以使用以下命令构建镜像:

bash
docker compose build

使用 Docker Compose 可以极大简化多容器应用的部署和管理,提升开发效率。