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依赖
- 设定一条容器启动时候的默认命令
获取更多Dockerfile 的书写方式请访问Docker用户指引和Dockerfile参照
你可以运行如下命令来测试创建
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 来访问你的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的整个工作流程
更多内容敬请期待