简介
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
- 下载并安装
### 安装 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
- 赋予可执行权限
chmod +x /usr/libexec/docker/cli-plugins/docker-compose
关键三步骤
- 通常将每个服务作为的一个单独的容器运行,所以可以使用
Dockerfile定义每个应用程序的环境。 - 使用 docker-compose.yml 定义构成整体项目的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行
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