您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

Docker容器服务编排利器详解

51自学网 2022-07-22 18:46:08
  网站维护

一、使用Docker Compose必要性及定义

用容器运行一个服务,需要使用docker run命令。但如果我要运行多个服务呢?

假设我要运行一个web服务,还要运行一个db服务,那么是用一个容器运行,还是用多个容器运行呢?

一个容器运行多个服务会造成镜像的复杂度提高,docker倾向于一个容器运行一个应用

那么复杂的架构就会需要很多的容器,并且需要它们之间有关联(容器之间的依赖和连接)就更复杂了。

这个复杂的问题需要解决,这就涉及到了**容器编排**的问题了。

  • Compose
  • 编排
    • 是对多个容器进行启动和管理的方法
    • 例如:LNMT,先启动MySQL,再启动Tomcat,最后启动Nginx
  • 服务架构的演进
  • 单体服务架构
  • 分布式服务架构
  • 微服务架构
  • 超微服务架构
  • 容器编排工具
  • docker machine
  • 在虚拟机中部署docker容器引擎的工具
  • docker compose
  • 是一个用于定义和运行多容器Docker的应用程序工具
  • docker swarm
  • 是Docker Host主机批量管理及资源调度管理工具
  • mesos+marathon
  • mesos 对计算机计算资源进行管理和调度
  • marathon 服务发现及负载均衡的功能
  • kubernetes
  • google开源的容器编排工具

二、Docker Compose应用参考资料

网址 https://docs.docker.com/compose/

  • yaml格式

https://yaml.org/

三、Docker Compose应用最佳实践步骤

3.1 概念

  • 工程(project)
  • 服务 (Service)
  • 容器 (Container)

3.2 步骤

1.定义应用的Dockerfile文件,为了anywhere进行构建。

2.使用docker-compose.yaml定义一套服务,这套服务可以一起在一个隔离环境中运行。

3.使用docker-compose up就可以启动整套服务。

四、Docker Compose安装

# wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
# mv docker-compose-linux-x86_64 /usr/bin/docker-compose
# chmod +x /usr/bin/docker-compose
# docker-compose versionDocker Compose version v2.2.3

五、Docker Compose应用案例

运行Python语言开发的网站

5.1 网站文件准备

# mkdir flaskproject[root@localhost ~]# cd flaskproject/[root@localhost flaskproject]#
[root@localhost flaskproject]# vim app.py[root@localhost flaskproject]# cat app.pyimport timeimport redisfrom flask import Flaskapp = Flask(__name__)cache = redis.Redis(host='redis', port=6379)def get_hit_count():    retries = 5    while True:        try:            return cache.incr('hits')        except redis.exceptions.ConnectionError as exc:            if retries == 0:                raise exc            retries -= 1            time.sleep(0.5)@app.route('/')def hello():    count = get_hit_count()    return 'Hello World! I have been seen {} times./n'.format(count)
[root@localhost flaskproject]# vim requirements.txt[root@localhost flaskproject]# cat requirements.txtflaskredis

5.2 Dockerfile文件准备

[root@localhost flaskproject]# vim Dockerfile[root@localhost flaskproject]# cat DockerfileFROM python:3.7-alpineWORKDIR /codeENV FLASK_APP app.pyENV FLASK_RUN_HOST 0.0.0.0RUN apk add --no-cache gcc musl-dev linux-headersCOPY requirements.txt requirements.txtRUN pip install -r requirements.txtCOPY . .CMD ["flask", "run"]

5.3 Compose文件准备

[root@localhost flaskproject]# vim docker-compose.yaml[root@localhost flaskproject]# cat docker-compose.yamlversion: '3'services:  web:    build: .    ports:      - "5000:5000"  redis:    image: "redis:alpine"

5.4 使用docker-compose up启动容器

[root@localhost flaskproject]# lsapp.py  docker-compose.yaml  Dockerfile  requirements.txt
[root@localhost flaskproject]# docker-compose up
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1