(第六章)专注编排与部署

文章目录

1.编排与部署

  • 如何批量创建、段哦都和管理容器成了制约Docker技术在任何组织内大规模应用的主要障碍,蔻带解决的正式容器的编排与部署问题

  • Docker优点:提供了一种全新的软件发布机制。
    开发者使用Docker镜像作为统一的软件制品载体;
    使用Docker容器提供独立的软件运行上下文环境;
    使用Docker Hub提供镜像统一操作;
    使用Dockerfile定义定义使用者在容器中需要进行的操作,还能定义容器中运行软件需要的配置,即:软件开发和运维能够在一个配置文件上达成统一

  • Dockerfile重现一个容器,Compose重现容器的配置和集群

  • 编排:将部署对象,部署流程,以及部署所需的依赖文件,存储位置都在编排工具中以指定的格式(eg:配置文件或者特定的代码)保存起来,能够在全新的环境中可靠有序地重现出来。

  • 部署:指的是按照编排所指定的内容和流程,在目标机器上执行编排指定的环境初始化,存访指定的依赖和文件,运行指定的部署动作,最终按照编排中的规则来确认部署是否成功。

  • Fig/Compose的eg
    (1)Fig是面向Docker容器集群做的编排部署的唯一工具
    (2)Fig被Docker官方改名为Compose
    (3)使用Fig/Compose实现上述编排与部署的eg

1)Compose的安装
curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-``uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

(2)在Docker宿主机上,创建工作目录和应用
mkdir composetest & composetest

在该目录下,创建一个app.py,基于Flask的Web轻应用
from flask import Flask
from flask import Redis
import os
app=Flask(__name__)
redis=Redis(host='redis',port=6379) 

@app.route('/') ##访问跟目录
def hello():
	redis.incr('hits')##返回一个从Redis里读取的值,该值通过自加来统计访问次数
	return 'Hello World! I have been seen %s times.' %redis.get('hits')

if __name__="__main__"
	app.run(host="0.0.0.0",debug=True)##Web容器在0.0.0.0上监听默认端口500并启动3)在requirements.txt中指定Python依赖包:flask和redis

(4)定义运行这个应用的Docker容器,Dockerfile如下:
FROM python:2.7    ##安装依赖
ADD . /code			## 添加工作目录
WORKDIR /code
RUN pip install -r requirements.txt

(5)一个docker-conmpose.yml来定义这个工作集群,编排部署的核心:
web:
	build: .
	command: python app.py
	ports:
		-"5000:5000"
	volumes:
		- .:/code
	links:
		- redis
redis:
	image:redis

在该YAML文件里,可以看到两个key:web和redis,意味着用Compose定义了由两个“服务”组成的Docker集群

(6)执行:docker-compose up,在容器的Python Web服务中可以看到统计的访问次数
说明:
(1)第一个服务叫web,他从当前目录的Dockerfile build得到;
在容器中运行python app.py;
把容器内的5000端口映射到主机的5000端口;
挂载执行这些操作所在的目录到/code目录下;
代码的修改会直接在容器中体现

(2)redis直接使用已有的redis镜像,Dockerfile不必另外写。


发布了556 篇原创文章 · 获赞 140 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/104298054