docker(四、容器编排docker compose)

docker(四、容器编排docker compose)

  • 在实际的生产环境中,一个应用往往由多个组件构成,如果一个docker只运行一个进程,那运行多个组件则必须运行多个容器
  • 在一个由容器构成的应用中,需要一个有效的工具来定义一个应用由哪些容器组成,容器之间如果关联,这就是容器编排。
  • compose:
    • 概念:一个用来定义和运行多容器应用的工具,可以通过一个yaml文件的配置管理所有服务。
    • 原理:compose是使用yml文件定义多容器,本质上来讲,就是一个对docker命令的封装。
    • 步骤:
      • 用dockerfile定义应用的运行环境,以便应用在任何地方都可以复制
      • 用docker-compose.yml文件定义应用的各个服务,以便这些服务可以作为应用的组件一起运行
      • 执行docker-compose up命令,compose就会创建和运行整个应用
  • compose安装:
    • github发布页:https://github.com/docker/compose/releases
    • centos下载compose:sudo curl -L “https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64” -o /usr/local/bin/docker_compose(-o 的作用相当于把docker-compose-linux-x86_64下载到bin目录下,并更名为docker_compose)

下载compose遇到问题:curl: (35) Encountered end of file
原因是没开启443端口(https网页浏览端口,类似http的80端口),解决办法:

# systemctl start firewalld   # 开启防火墙 
# firewall-cmd --zone=public --add-port=443/tcp --permanent # 添加 443 端口访问
# firewall-cmd --reload # 重新加载让配置生效

如果下载很慢,可以先下载安装包,通过xftp上传到centos

  • 进入 /usr/local/bin/目录,执行命令:chmod 777 docker_compose;

  • 查看compose版本号:./docker_compose -v

  • 卸载docker_compose : rm /usr/local/bin/docker_compose

纠正,不要命名为docker_compose,而要命名为docker-compose

compose测试

三个主要步骤:参看官网

  1. 创建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)
    
  2. 创建requirements.txt,标明要下载的框架:
    flask
    redis
    
  3. 创建Dockerfile文件:
    # syntax=docker/dockerfile:1
     FROM python:3.7-alpine
     WORKDIR /code
     ENV FLASK_APP=app.py
     ENV FLASK_RUN_HOST=0.0.0.0
     # 如果下面这句命令出现错误,可以注释
     # 或者换阿里云镜像源
     # RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
     RUN apk add --no-cache gcc musl-dev linux-headers 
     COPY requirements.txt requirements.txt
     RUN pip install -r requirements.txt
     EXPOSE 5000
     COPY . .
     CMD ["flask", "run"]
    
    安装pyhton包管理工具
  4. 创建compose文件,定义服务
     version: "3.9"
     services:
     web:
         build: .
         ports:
         - "8000:5000"
     volumes:    // 添加一个数据卷
       - .:/code
     redis:     // 公共镜像
         image: "redis:alpine"
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值