博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker Compose 容器编排
阅读量:4652 次
发布时间:2019-06-09

本文共 2564 字,大约阅读时间需要 8 分钟。

1. 前言

Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器。

使用Compose 基本上分为三步:

  1. Dockerfile 定义应用的运行环境
  2. docker-compose.yml 定义组成应用的各服务
  3. docker-compose up 启动整个应用

2. 安装Compose

从 最新版的Docker Compose,例如:

curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

安装成功后,查看版本

$ docker-compose --versiondocker-compose version 1.14.0, build 1719ceb

3. 使用Compose

3.1 创建一个Python应用, 使用Flask,将数值记入Redis

  1. 创建一个项目目录
# mkdir composetest# cd composetest
  1. 在项目目录下,创建app.py
from flask import Flaskfrom redis import Redisapp = Flask(__name__)redis = Redis(host='redis', port=6379)@app.route('/')def hello():    count = redis.incr('hits')    return 'Hello World! I have been seen {} times.\n'.format(count)if __name__ == "__main__":    app.run(host="0.0.0.0", debug=True)
  1. 在项目目录下,创建requirements.txt文件
flaskredis

3.2 创建 Dockerfile

在项目目录下,创建Dockerfile

FROM python:3.4-alpineADD . /codeWORKDIR /codeRUN pip install -r requirements.txtCMD ["python", "app.py"]

对上面的Dockerfile做一下简单说明:

  • 容器使用Python 3.4的镜像
  • 将当前目录下文件拷贝到容器内/code
  • 指定工作目录为/code
  • 安装python需要的库:flask, redis
  • 容器执行命令 python app.py

3.3 创建Compose脚本

在项目目录下,创建docker-compose.yml文件

version: '2'services:  web:    build: .    ports:     - "5000:5000"    volumes:     - .:/code  redis:    image: "redis:alpine"

3.4 启动应用

会执行编排脚本,分别制作和抓取web,redis镜像,启动容器

$ docker-compose up Pulling image redis... Building web... Starting composetest_redis_1... Starting composetest_web_1... redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3 web_1   |  * Running on http://0.0.0.0:5000/ web_1   |  * Restarting with stat

3.5 访问应用

每刷新一下页面,次数加1

759546-20170627170714664-961327159.png

3.6 更新应用

  1. 修改app.py内容,然后保存,例如:
return 'Hello from Docker! I have been seen {} times.\n'.format(count)
  1. 刷新浏览器页面,发现页面内容改变,并且次数依然在递增
    759546-20170627170704711-133217505.png

4. 体验其他命令

  1. 使用daemon模式启动,并且查看容器状态
$ docker-compose up -dStarting composetest_redis_1...Starting composetest_web_1...$ docker-compose psName                 Command            State       Ports-------------------------------------------------------------------composetest_redis_1   /usr/local/bin/run         Upcomposetest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp
  1. 查看容器环境变量
$ docker-compose run web envPATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=bdc78b829f9fTERM=xtermLANG=C.UTF-8GPG_KEY=97FC712E4C024BBEA48A61ED3A5CA953F73C700DPYTHON_VERSION=3.4.6PYTHON_PIP_VERSION=9.0.1HOME=/root
  1. 停止Compose启动的容器
$ docker-compose stop
  1. 停止和删除所有容器
$ docker-compose down

转载于:https://www.cnblogs.com/jaychang/p/7086146.html

你可能感兴趣的文章
[转] Ubuntu安装Fcitx以及Fcitx输入中文不显示候选词框的解决办法
查看>>
多表单提交
查看>>
在linux平台实现atosl
查看>>
软件质量属性的场景描述
查看>>
数据格式化
查看>>
Linux的常用用法
查看>>
JAVA事务系列一:事务基本概念
查看>>
12月5日站立会议
查看>>
SQL 语法学习
查看>>
嗯---NOI水题集合之:阿狸的打字机
查看>>
WPF拖动DataGrid滚动条时内容混乱的解决方法
查看>>
tomcat定时重启
查看>>
读jQuery之六(缓存数据)
查看>>
迭代器 递归 格式化 练习
查看>>
IOS 适应各种iphone屏幕尺寸
查看>>
sharepoint_study_1
查看>>
微博什么技术啊……还说支持八个明星并发出轨,结果…
查看>>
实验6 结构体、共用体与枚举
查看>>
poj 1185 炮兵阵地(状态压缩dp)
查看>>
[Java]Java日期及时间库插件 -- Joda Time.
查看>>