compose介绍
Compose 的定位是“定义和运行多个 Docker 容器的应用,其前身是开源项目 Fig ,目前仍然兼容 Fig 格式的模本文件。**Compose 项目由 Python 编写.**之前我们知道,使用 Dockerfile 模板文件可以让用户很方便地定义 一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,
列如部署一个web服务,可能包括mysql,redis,负载均衡等等!
Compose 允许用户通过一个单独的docker-compose.yml模板文件( YAML 格式)来定义 一组相关联的应用容器为一个项目
Compose 中的 service 和 project
- 服务( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
- 项目 project ):由一组关联的应用容器组成的 个完整业务单元,在docker-compose.yml 文件中定义
Compose 的默认管理对象是项目,可通过子命令对项目中的一组容器进行便捷的生命周期管理
安装 Compose
二进制文件安装
官网参考:https://docs.docker.com/compose/install/
- 下载最新版的docker-compose文件
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 若是github访问太慢,可以用daocloud下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 添加可执行权限
chmod +x /usr/local/bin/docker-compose
- 测试
docker-compose --version
docker-compose version 1.25.1, build a82fef07
pip 安装
yum install epel-release -y
pip install --upgrade pip
yum install -y python-pip
pip install --upgrade pip
docker-compose --version
应用 Compose 的案例
可以参照官方案例:https://docs.docker.com/compose/gettingstarted/
编写一个 Python Web 案例,应用 Compose 编排服务 案例包含两个容器 Python Web 容器、 Redis 数据库容器
- 创建 composeapp 目录
mkdir composeapp
cd composeapp
- 编写 Python 程序
touch Dockerfile
touch app.py
cat app.py
from flask import Flask
from redis import Redis
import os
app=Flask(__name__)
redis=Redis(host='redis',port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello Docker Book reader! I have been seen {0} times'.format(redis.get('hits'))
if __name__=="__main__":
app.run(host='0.0.0.0',debug=True)
- 创建 Python 的依赖包描述文件
cat requirements.txt
falsk
redis
- 编写 Python Web 容器的镜像 Dockerfile 文件
cat Dockerfile
FROM python:3.7
MAINTAINER lesheng <123465212@qq.com>
ENV REFRESHED_AT 2016-08-01
ADD ./ /composeapp
WORKDIR /composeapp
RUN pip install -r requirements.txt
- 构建镜像
[root@localhost composeapp]# docker build -t compose_test .
Sending build context to Docker daemon 4.096kB
Step 1/6 : FROM python:3.7
---> ad37de9b03ef
Step 2/6 : MAINTAINER lesheng <123465212@qq.com>
---> Using cache
---> 5c6bcd19da5d
Step 3/6 : ENV REFRESHED_AT 2016-08-01
---> Using cache
---> 328dce5aded7
Step 4/6 : ADD ./ /composeapp
---> d9f8b098b9ca
Step 5/6 : WORKDIR /composeapp
---> Running in a16217af77d9
Removing intermediate container a16217af77d9
---> c11d0a64af02
Step 6/6 : RUN pip install -r requirements.txt
---> Running in 9ff9ba40142b
Collecting flask
Downloading Flask-2.1.2-py3-none-any.whl (95 kB)
Collecting redis
Downloading redis-4.2.2-py3-none-any.whl (226 kB)
Collecting itsdangerous>=2.0
Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



