DockerCompose简介

  1. 简介
            docker-compose是基于docker的编排工具,使容器的操作能够批量的,可视的执行,是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,当在宿主机启动较多的容器时候,
    如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用 dockerd的单机编排工具 docker-compose。
            docker-compose是基于docker的开源项目,托管于github上,由python实现,调用 docker服务的API负责实现对docker容器集群的快速编排,即通过一个单独的yaml文件,来定义一组相
    关的容器来为一个项目服务。
            所以,docker-compose默认的管理对象是项目,通过子命令的方式对项目中的一组容器进行生命周期的管理。
  2. 安装DockerCompose
    1)官方推荐下载地址,很慢,我们不用
          
    sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    2)推荐这个地址,国内地址,下载速度特别快
        
    sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    3)授权
         
    sudo chmod +x /usr/local/bin/docker-compose
    

    4)查看版本
         命令:docker-compose --version
  3. docker-compose初体验,docker-compose官方提供的例子,一个使用redis计数的例子
    1)为项目创建一个composetest文件夹
          
    2)在composetest文件夹中创建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)

    3)创建一个requirements.txt文件,内容如下
          
    4)创建Dockerfile
            
          内容:
          
    #基于python:3.7-alpine
    FROM python:3.7-alpine
    
    #设置登录落脚点
    WORKDIR /code
    
    #设置环境变量
    ENV FLASK_APP=app.py
    ENV FLASK_RUN_HOST=0.0.0.0
    
    #运行apk add --no-cache gcc musl-dev linux-headers命令
    RUN apk add --no-cache gcc musl-dev linux-headers
    
    #拷贝requirements.txt文件到容器中
    COPY requirements.txt requirements.txt
    
    #运行命令
    RUN pip install -r requirements.txt
    
    #暴露端口5000
    EXPOSE 5000
    
    #拷贝当前目录
    COPY . .
    
    #执行flask run命令
    CMD ["flask", "run"]

    5)创建docker-compose.yml并且在docker-compose.yml文件中定义我们的服务
         
         内容:
         
    version: "3.9"
    services:
      web:
        build: .
        ports:
          - "5000:5000"
      redis:
        image: "redis:alpine"

    6)最后在/opt/composetest目录下启动应用
          
          命令:docker-compose up,如果 想要项目在后端运行使用 docker-compose up -d
           
            
    7)本地访问 curl http://127.0.0.1:5000 以查看应用程序是否正常运行
            成功之后会看到前面python编写的app.py文件;每刷新一次 打印 数字递增的字符串
            
    8)其他相关命令
         在后台运行服务,则可以将 -d标志(用于"分离"模式)传递给docker-compose up并用于docker-compose ps查看当前正在运行什么
        
    [root@web composetest]# docker-compose up -d
    Starting composetest_web_1   ... done
    Starting composetest_redis_1 ... done
    [root@web composetest]# docker-compose ps
           Name                      Command               State           Ports         
    -------------------------------------------------------------------------------------
    composetest_redis_1   docker-entrypoint.sh redis ...   Up      6379/tcp              
    composetest_web_1     flask run                        Up      0.0.0.0:5000->5000/tcp

    停止命令 docker-compose stop 或docker-compose down

    [root@web composetest]# docker-compose stop
    Stopping composetest_web_1   ... done
    Stopping composetest_redis_1 ... done

    假设项目需要重新打包  docker-compose up --build

  4. 网络规则
    在这里插入图片描述
    在这里插入图片描述
    docker network inspect [networkid]
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值