容器管理工具Docker(十一):Docker容器服务编排利器 Docker Compose


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

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

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

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

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

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

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

二、Docker Compose应用参考资料

  • 官方网址
    • https://docs.docker.com/compose/

image-20220215214445753

  • 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安装

image-20220215215216047

image-20220215215359944

下载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 version
Docker 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.py
import time

import redis
from flask import Flask

app = 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.txt
flask
redis

5.2 Dockerfile文件准备

[root@localhost flaskproject]# vim Dockerfile
[root@localhost flaskproject]# cat Dockerfile
FROM python:3.7-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巧克力配酸奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值