Docker 官方文档翻译



docker-compose 概述

docker
compose 是利用docker来运行多个容器的工具。利用compose 在一个文件中定义多个容器,然后利用一个单独的命令,可以执行你所想做的任何事情。
compose 能较好的作为开发环境的假设,服务器脚手架以及Ci方面的应用。我们不推荐使用在生产环境中。
使用compose 需要一下三个步骤:
1.在Dockerfile中定义你的应用环境,一边在任何地方重建环境
2.在docker-compose.yml中定义你的多种服务,以组成应用环境,并在单独的容器中一起运行。
3.最后执行docker-compose up 启动和运行你的整个应用
一个docker-compose.yml如下



web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis

compose 有如下命令来管理应用的整个生命周期

  • Start, stop and rebuild 服务
  • 查看镜像的运行状态
  • 查看服务日志
  • 运行一次性命令




docker-compose快速上手

利用一个简单python web 应用来,大体上了解下compose 。你需要了解一点点,或者完全不熟悉python也是可以的。



安装

首先,安装docker 和 compose。
接下来,建立项目所在目录。



$ mkdir composetest
$ cd composetest

进入目录,创建app.py,一个简单的web应用利用Flask framework,来记录访问的次数在redis缓存中。不要担心你没有安装redis,你只需要关心在你的docker 文件中是否定义了redis服务即可。
app.py的脚本代码如下



from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello World! I have been seen %s times.' % redis.get('hits')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

接下来定义phthon 依赖在requirements.txt文件中:



flask
redis



创建docker镜像

现在我们来创建一个应用依赖的镜像容器。你可以制定如何建立一个镜像利用Dockerfile:



FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py

这个脚本告诉docker 我们要执行如下操作:

  • 从官方库中拉去一个python2.7的镜像
  • 在“.”当前目录中的 添加一个code目录
  • 设定工作目录为code
  • 安装python依赖
  • 设定一条容器启动时候的默认命令


docker build -t web .



定义服务

接下来利用docker-compose.yml 来定义一组服务



web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis

这里定义了两个服务



web

  • 在当前目录查找Dockerfile并执行
  • 将主机的5000 端口 转发给镜像的5000 端口
  • web 服务依赖redis 服务
  • 将code目录挂载在镜像中



redis

  • 从Docker Hub上拉去redis镜像



建立和运行compose

现在我只需要执行 docker-compose up 就可以从官方拉去我们设定好的镜像了。
如果你是用了 Docker Machine 你可以使用 docker-machine ip MACHINE_VM 就能获取docker的ip。
如果你没有使用Boot2docker,你可以使用 http://0.0.0.0:5000/">http://0.0.0.0:5000 来访问你的web 应用。
你会得到如下返回
Hello World! I have been seen 1 times.
刷新会增加次数
如果你想让docker 后台运行,请家参数 -d
可以利用docker-compose ps查看运行中的镜像
docker-compose run 允许你执行一条命令在你的镜像中,比如你可以执行如下命令



$ docker-compose run web env

更多请参考 docker-compose –help
当你想停止docker 镜像是可以执行



$ docker-compose stop

至此你已经看到了compose的整个工作流程
更多内容敬请期待