docker-compose(入门到摆烂)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值