• docker compose


    一、概念

    Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。

    其代码目前在 https://github.com/docker/compose 上开源。

    在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

    Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

    Compose 中有两个重要的概念:

    • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

    • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

    二、安装与卸载

    安装

    Compose 支持 Linux、macOS、Windows 10 三大平台。

    Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。

    前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。

    Docker for Mac 、Docker for Windows 自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用。

    $ docker-compose --version
    
    docker-compose version 1.17.1, build 6d101fb

    Linux系统安装

    1.二进制包

      从 官方 GitHub Release 处直接下载编译好的二进制文件

    例如,在 Linux 64 位系统上直接下载对应的二进制包。

    $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    $ sudo chmod +x /usr/local/bin/docker-compose

    2.pip安装

    注: x86_64 架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果您计算机的架构是 ARM (例如,树莓派),再使用 pip 安装。

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

    执行安装命令:

    $ sudo pip install -U docker-compose

    3.bash 补全命令

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

    4.容器中执行

    Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。

    $ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
    $ chmod +x /usr/local/bin/docker-compose

    卸载

     如果是二进制包方式安装的,删除二进制文件即可。

    $ sudo rm /usr/local/bin/docker-compose

    如果是通过 pip 安装的,则执行如下命令即可删除。

    $ sudo pip uninstall docker-compose

    三、使用

    最常见的项目是 web 网站,该项目应该包含 web 应用和缓存。

    下面用 Python 来建立一个能够记录页面访问次数的 web 网站。

    web应用

    新建文件夹,在该目录中编写 app.py 文件

    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

    编写 Dockerfile 文件,内容为

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

    docker-compose.yml

    编写 docker-compose.yml 文件,这个是 Compose 使用的主模板文件。

    version: '3'
    services:
    
      web:
        build: .
        ports:
         - "5000:5000"
    
      redis:
        image: "redis:alpine"

    运行compose项目

    $ docker-compose up

    此时访问本地 5000 端口,每次刷新页面,计数就会加 1。

  • 相关阅读:
    一个编程的代码网址
    FireFox竟然成功抢注ie7.com域名
    呀!天空软件真的被百度收购了
    呀!天空软件真的被百度收购了
    一个编程的代码网址
    不只MSN会被监听,QQ也一样的
    FireFox竟然成功抢注ie7.com域名
    MS06014网马的一种变形方法
    小马ASP
    Etoile-又一个桌面气象
  • 原文地址:https://www.cnblogs.com/zwq-/p/11112937.html
Copyright © 2020-2023  润新知