docker-compose 的介绍

154 阅读2分钟

Docker Compose 概述

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过使用 YAML 文件,你可以配置应用所需的所有服务,并通过一个单一命令来创建和启动所有服务。Docker Compose 简化了多容器应用的管理,使得开发、测试和部署变得更加容易和高效。

主要特点

  1. 多容器应用的定义:使用一个 YAML 文件定义应用所需的所有服务。
  2. 一键启动和停止:通过简单的命令启动和停止所有服务。
  3. 服务依赖管理:通过配置服务依赖,确保服务按顺序启动。
  4. 可重复的开发环境:确保在不同环境中(如开发、测试、生产)应用的行为一致。
  5. 扩展和缩减服务:方便地扩展和缩减服务实例数量。

基本概念

  1. 服务(Service) :服务是一个独立的容器实例,它可以包含具体的应用程序代码及其依赖。
  2. 项目(Project) :一组关联的服务定义,组成一个独立的环境。项目通常由一个 Docker Compose 文件定义。

Docker Compose 文件示例

以下是一个典型的 docker-compose.yml 文件示例:

yaml
复制代码
version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./web:/usr/share/nginx/html
  db:
    image: postgres:latest
    environment:
      POSTGRES_DB: exampledb
      POSTGRES_USER: exampleuser
      POSTGRES_PASSWORD: examplepass
    ports:
      - "5432:5432"
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

示例说明

  • version: '3.8' : 定义 Compose 文件的版本。

  • services: 定义应用的所有服务。

    • web: 定义一个名为 web 的服务。

      • image: 指定服务使用的 Docker 镜像,这里使用的是官方的 Nginx 镜像。
      • ports: 映射主机的 8080 端口到容器的 80 端口。(docker 命令的话,则是 -p 8080:80)
      • volumes: 挂载主机目录到容器内的目录。
    • db: 定义一个名为 db 的服务。

      • image: 指定服务使用的 Docker 镜像,这里使用的是官方的 PostgreSQL 镜像。
      • environment: 设置环境变量,用于配置数据库。
      • ports: 映射主机的 5432 端口到容器的 5432 端口。
      • volumes: 使用命名卷来持久化数据。
  • volumes: 定义命名卷,用于持久化数据。

常用命令

  1. 启动服务

    bash
    复制代码
    docker-compose up
    

    使用 -d 选项在后台运行:

    bash
    复制代码
    docker-compose up -d
    
  2. 停止服务

    bash
    复制代码
    docker-compose down
    
  3. 查看服务日志

    bash
    复制代码
    docker-compose logs
    

    查看特定服务的日志:

    bash
    复制代码
    docker-compose logs <service_name>
    
  4. 列出服务

    bash
    复制代码
    docker-compose ps
    
  5. 重启服务

    bash
    复制代码
    docker-compose restart
    
  6. 扩展服务

    bash
    复制代码
    docker-compose up --scale <service_name>=<num>
    

    例如,将 web 服务扩展到 3 个实例:

    bash
    复制代码
    docker-compose up --scale web=3