Docker Compose基础

371 阅读3分钟

简介

Compose 是用于定义和运行多容器 Docker 应用的工具。在 Docker Compose 中通过 YAML (例如:docker-compose.yml) 文件来配置应用程序需要的所有服务。之后只需一个命令 (例如:docker compose up),就可以从 YML 文件配置中创建并启动所有服务。

安装 Docker Compose V2

对于 Docker Desktop 版,因为已集成了 Compose V2,所以不用单独安装;
对于 Linux 或者 Windows Server 非 Docker Desktop 版则需单独安装 Compose V2;

Linux 上安装 Compose V2

  1. 下载并安装
### 安装 Docker Compose V2
curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

### 可以替换镜像源加速下载
curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/libexec/docker/cli-plugins/docker-compose
  1. 赋予可执行权限
chmod +x /usr/libexec/docker/cli-plugins/docker-compose

关键三步骤

  1. 通常将每个服务作为的一个单独的容器运行,所以可以使用 Dockerfile 定义每个应用程序的环境。
  2. 使用 docker-compose.yml 定义构成整体项目的服务,这样它们可以在隔离环境中一起运行。
  3. 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

Compose文件示例

version: "3.9"
services:
  demo-app:
    image: cc6a14d508e9
    container_name: demo-app
    expose:
      - 20018
    volumes:
      - "/data/project/demo/demo-app:/data/project/demo/demo-app"
    working_dir: /data/project/demo/demo-app/jar/product/
    environment:
      JAVA_OPT_EXT: -server -Xmx512m -Xms512m -Xmn256m -Xss256k
      JAVA_OPTS: -Djava.security.egd=file:/dev/./urandom --spring.config.location=file:./ --spring.profiles.active=product
    command: java -jar demo-app-1.0.jar

Docker Compose 特性

单主机上拥有多个独立环境

Docker Compose 依据项目工程名区分各个独立环境;
默认的项目名称为项目所在的目录名称,也可以通过docker compose -p命令选项指定项目名。

保留数据卷数据

Docker Compose 会保留容器服务使用的数据卷;
当执行docker compose up,如果找到先前已运行过的容器,那么就会将旧容器的数据卷复制到新容器中;
这个过程就保证了创建过的数据卷中的数据不会丢失。

只重新创建有变动的容器

Docker Compose 缓存了创建容器的配置;
在重新启动一个没有配置变动服务时,Compose 会使用已存在的容器;
这就意味着可以快速应用某一环境下的改变。

支持变量与多环境间切换编排配置

Docker Compose 支持在 Compose 文件 中使用变量,这样就可以使用变量来自定义不同环境的编排配置;
Docker Compose 也可以通过extends字段扩展 Compose 文件或直接创建多个 Compose 文件。

常用命令

docker-compose up

Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...] docker-compose up命令用来构建、创建(或重创建)、启动、运行容器服务

docker-compose up -d

单纯的docker-compose up会将所有需要的容器准备好并启动运行。此时也会看到命令行的输出,但是当退出命令行(ctrl + C)时,所有的容器服务也会跟着停止。如果要让容器服务启动时在后台运行,就可以使用命令docker-compose up -d或者docker-compose up -detach

参考

[1] Docker Compose overview
[2] Install Compose standalone
[3] Key features and use cases