Compose 是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。
使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
Compose 的使用方式非常简单,基本上就是下面的三板斧:
- 定义 Dockerfile
- 定义 docker-compose.yml
- 运行 docker-compose up
其实 compose 提供的命令可以管理应用的整个生命周期:
- Start, stop, rebuild services
- 查看运行中 service 的状态
- 输出运行中 service 的日志
- 在 service 中执行一次性的命令
本文我们通过一个简单的 demo 来介绍 Docker Compose 的基本用法。说明:本文的演示环境为 ubuntu 16.04。本文的演示代码可以从 github 上下载。
安装 Docker Compose
安装 Docker Compose 前请先在本地安装 Docker。
Docker Compose 的安装十分简单,在 ubuntu 中直接把可执行文件下载到本地就可以了。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose$ sudo chmod +x /usr/local/bin/docker-compose
其中 1.22.0 是最新的版本。当然 Docker Compose 是个开源项目,你可以选择安装不同的版本,或者是自行编译。下图为笔者安装之后显示的版本信息:

注意,默认的安装并不包括命令补全功能,也就是说像 docker-compose restart 这样的命令,你输入 docker-compose re 后按 tab 键是无法自动补全的。想要这个功能还需要额外的安装,以 Bash 为例,执行下面的命令:
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.22.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
然后重新登录 Bash,就可以通过 tab 键自动补全命令了!
创建演示 demo
下面的示例来自 docker 官网,就是一个简单的 Flask 网页应用,后端使用 redis 存储数据,其 web server 的代码如下(可以从这里下载到本文中的代码):
import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis

