Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。python
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker applications)」,其前身是开源项目 Fig。git
使用一个 Dockerfile 模板文件,可让用户很方便的定义一个单独的应用容器。然而,在平常工做中,常常会碰到须要多个容器相互配合来完成某项任务的状况。例如要实现一个 Web 项目,除了 Web 服务容器自己,每每还须要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。github
Compose 刚好知足了这样的需求。它容许用户经过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。web
Compose 中有两个重要的概念:redis
Compose 的默认管理对象是项目,经过子命令对项目中的一组容器进行便捷地生命周期管理。可见,一个项目能够由多个服务(容器)关联而成, Compose 面向项目进行管理docker
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。所以,只要所操做的平台支持 Docker API,就能够在其上利用 Compose 来进行编排管理。数据库
Compose 能够经过 Python 的包管理工具 pip 进行安装,也能够直接下载编译好的二进制文件使用,甚至可以直接在 Docker 容器中运行。前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。Docker for Mac 、 Docker for Windows 自带 docker-compose 二进制文件,安装 Docker 以后能够直接使用。Linux 系统请使用如下介绍的方法安装。flask
在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件便可。后端
例如,在 Linux 64 位系统上直接下载对应的二进制包。缓存
sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
对于卸载若是是二进制包方式安装的,删除二进制文件便可。
sudo rm /usr/local/bin/docker-compose
这种方式是将 Compose 看成一个 Python 应用来从 pip 源中安装。执行安装命令:
sudo pip install -U docker-compose
使用PIP安装的时候,卸载可使用以下命令:
sudo pip uninstall docker-compose
下面咱们模拟一个网站,该网站的做用是可以记录页面的访问次数。咱们使用Flask开发,缓存使用redis
新建一个文件夹web,在该文件夹下建立app.py文件,内容以下:
from flask import Flask from redis import Redis app = Flask(__name__) redis = Redis(host="redis",port=6379) @app.route("/") def hello(): count = redis.incr('hits') return 'hello world! {}'.format(count) if __name__ == "__main__": app.run(host="0.0.0.0",debug=True)
FROM python:3.6-alpine ADD . /code WORKDIR /code RUN pip install redis flask CMD ["python","app.py"]
编写 docker-compose.yml 文件,这个是 Compose 使用的主模板文件。
version: '3' services: web: build: . ports: - "5000:5000" redis: images: "redis:alpine"
docker-compose up
此时访问本地 5000 端口,每次刷新页面,计数就会加 1。