Compose 概览
Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 Compose,你使用一个 YAML 文件来配置你的应用的服务。然后,通过一个命令,从你的配置中创建和启动所有的服务。为了学习更多 Compose 所有的特性,可以查看 特性列表。
使用 Compose 基本三步走:
- 1、通过
Dockerfile
定义你的应用环境,以便在任何场景复用 - 2、在
docker-compose.yml
中定义组成应用程序的服务,以便他们能在隔离的环境中一同运行 - 3、运行
docker-compose up
,Compose 启动和运行你整个应用
一个
docker-compose.yml
看起来像这样:version: '2.0'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
Compose 有一系列命令管理应用的整个生命周期:
- 启动,停止和重建服务
- 查看运行服务的状态
- 查看服务的日志输出
- 在服务上运行一次性命令
Compose 的这些特性让它更高效:
Compose 通过一个项目名来隔离隔离环境。你可以在若干不同的上下文中使用这个项目名:
- 在一个开发机上,创建单个环境的多个副本,例如当你想针对一个项目每个功能分支各运行一个稳定的副本
- 在一个 CI 服务器上,为了防止内部版本相互干扰,可以将项目名设置为唯一的版本号
- 在共享主机或者开发机上,以防止可能使用相同服务名称的不同项目相互干扰
默认的项目名是项目目录名。你可以通过
-p
命令选项或者 COMPOSE_PROJECT_NAME
环境变量自定义项目名。Compose 保留服务用到的所有卷。当
docker-compose up
运行时,如果发现任何之前已经运行的容器,它会从旧的容器复制数据到新的容器。这一操作确保你在卷中创建的任何数据都不会丢失。如果你在 Windows 机器上使用 docker-compose
,查看 环境变量 并根据特定需求调整环境变量。Compose 缓存用于创建容器的配置。当你重启一个没有任何变更的服务时,Compose 会重新使用现有的容器。重复使用容器意味着你可以快速更改环境。