• 九、compose入门


    于2021年10月9日学习

    零基础初学一门新技术建议先看视频,了解运作原理之后再看文档,也就是先看老师讲再去看文档,事半功倍,个人建议。

    一、简介

    1. 是Docker 容器集群编排工具
    2. 是Docker 官方的开源项目
    3. 是Python编写的,后被GO语言重写

    先来个简短的介绍,不了解不要紧,接着往后看

    参考资料:docker入门到实践

    二、安装与卸载

    2.1 二进制安装

    curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    # 国内用户可以使用以下方式加快下载
    curl -L https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    
    #测试安装成功
    docker-compose --version
    

    也可直接下载上传到服务器,目前最新版本为v2.0.1

    2.2 pip安装

    这种方式是将 Compose 当作一个 Python 应用来从 pip 源中安装。

    pip install -U docker-compose
    

    2.3 使用bash补全命令

    curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
    

    这个脚本需要FQ才能下载,我已经上传到了腾讯云盘

    2.4 卸载

    1)二进制安装直接删除文件即可。

    rm /usr/local/bin/docker-compose
    

    2)pip安装使用如下命令删除

    pip uninstall docker-compose
    

    三、原理

    Compose通过案例来讲比较容易理解,下面开始讲个简单的案例。

    3.1 术语

    service:服务,一个容器叫一个服务,一个项目中通常由多个相关联的服务组成。

    project:项目,由多个相关联的容器组成的环境叫项目。

    现在不明白没事,先记住这两个概念即可,看后面的案例。

    3.2 案例

    此案例会用到3个文件,分别是app.py,Dockerfile,docker-compose.yml文件,我们先新键一个名为web的文件夹,再进入web文件夹分别创建如下三个文件。

    app.py文件

    用python编写的web文件,记录页面被访问次数。

    from flask import Flask
    from redis import Redis
    
    app = Flask(__name__)
    redis = Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis.incr('hits')
        return 'Hello World! 该页面已被访问 {} 次。
    '.format(count)
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", debug=True)
    

    Dockerfile

    创建一个python运行容器

    FROM python:3.6-alpine
    ADD . /code
    WORKDIR /code
    RUN pip install redis flask
    CMD ["python", "app.py"]
    

    docker-compose.yml

    compose模板文件,跟Dockerfile文件相似,不过Dockerfile用来定制创建一个容器,docker-compose.yml是用来定制创建一组先关联的容器,在这里,容器都叫服务。

    version: '3'
    services:
    
      web:
        build: .
        ports:
         - "5000:5000"
    
      redis:
        image: "redis:alpine"
    
    :'
    version:语法版本,目前最高版本为3
    services:定义服务,后续的web跟redis都是容器,在项目中叫服务
    web:web服务容器
    build:使用Dockerfile创建web服务容器
    ports:将宿主机的5000端口映射到容器5000端口
    image:使用镜像,将使用redis:alpine的镜像创建redis容器
    '
    

    运行compose项目

    docker-compose up
    

    访问本地5000端口,就能访问到该web服务,每次刷新页面,计数就会加1

    效果如下

    image-20211009152650371

    通过这个案例,我们知道docker-compose.yml是compose工具的核心文件,用来创建整个项目,该案例中就创建了一个由web容器跟redis数据库容器环境搭建而成的项目,在该项目中,这两个容器都称之为服务。

    四、总结

    1. compose是容器编排工具,用于创建和维护一组相关联的容器,不必我们再去使用docker run一个一个的去创建跟维护容器。

    2. compose核心文件是docker-compose.yml,里面记录了这一组容器是如何被创建,使用的什么镜像,声明什么端口,运行的什么服务跟命令。在这里,里面的每个容器都叫服务,而这一组容器组成的整体叫做项目。

    五、参考资料

    Docker从入门到实践

    编程不良人讲Compose

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    POJ 2155 Matrix(二维树状数组)
    HDU 1280 前m大的数
    HDU 3183 A Magic Lamp(二维RMQ)
    HDU 3743 Frosh Week(归并排序求逆序数)
    POJ 2299 Ultra-QuickSort ( 归并排序 + 求逆序数 )
    HDU 1166 敌兵布阵(树状数组)
    HDU 2846 Repository(字典树)
    HDU 1896 Stones(优先队列)
    HDU 4393 Throw nails(优先队列)
    进程池
  • 原文地址:https://www.cnblogs.com/tz90/p/12238459.html
Copyright © 2020-2023  润新知