docker-compose 基础和介绍

介绍:
    docker compose 是 docker 官方推出的一款单机容器编排工具,
        和 docker swarm, docker machine 并称为 docker 容器编排三剑客, 虽然其被 k8s 吊打,
        可是因为其简单易学在中小规模的集群中仍是占有至关的一部分地位的

    使用Compose的步骤:
        一、定义您的应用程序环境,Dockerfile以即可以在任何地方进行复制
        二、定义构成应用程序的服务,docker-compose.yml 以便它们能够在隔离环境中一块儿运行
        三、运行 docker-compose up 和 Compose starts 运行整个应用程序

compose 的特性:
    一、单个主机上的多个环境隔离
    二、建立容器时保留卷数据
    三、仅从新建立已更改的容器
    四、变量和在环境之间移动合成

安装:
    docker compose 依赖全部的工做依赖于 docker, 在安装 compose 前请确保已在本地或远程主机中安装 docker

    二进制安装:
        curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        chmod +x /usr/local/bin/docker-compose

    pip安装:
        pip install docker-compose

一个简单的例子:
    mkdir composetest && cd composetest             #建立一个专用目录,用于编写和保存 compose 文件
    cat app.py                                      #编写一个 flask web 应用做为测试
        import time
        import redis
        from flask import Flask

        app = Flask(__name__)
        cache = redis.Redis(host='redis', port=6379)        #链接 redis

        # 定义函数
        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()
            # 每访问一次返回的 count 加 1
            return 'Hello World! I have been seen {} times.\n'.format(count)

        if __name__ == "__main__":
            #运行 web 应用
            app.run(host="0.0.0.0", debug=True)

    cat Dockerfile                                          #编写docker file 文件以便 compose 能够根据 docker file 动态构建镜像
        FROM python:3.4-alpine
        ADD . /code
        WORKDIR /code
        RUN pip install flask redis
        CMD ["python", "app.py"]

    cat docker-compose.yml                                  #编写 compose 文件定义容器间的关系
        version: '3'
        services:
          web:
            build: .
            ports:
             - "5000:5000"
            volumes:
             - .:/code
          redis:
            image: "redis:alpine"

    docker-compose up                                       #启动 docker compose 定义的 docker 集群
    curl http://127.0.0.1:5000/                             #访问 Web APP

        # 示例来源
    # https://docs.docker.com/compose/gettingstarted/#step-5-edit-the-compose-file-to-add-a-bind-mount    

docker-compose 命令:
    介绍:
        一、docker-compose 命令的执行都必须指定或者在当前目录下存在 compose 文件, 且输出的内容都是这个 compose.yml 文件定义的集群内的信息
        二、每一个集群中能够拥有多个 services, services 由 compose.yml 的 services 定义

    选项:
        -f      指定 compose 文件路径(能够指定多个)

    子命令:
        create             建立 compose 集群, 但不启动(已废弃, 使用 up --no-start 代替)
        down               中止或删除容器, 网络, 镜像和数据卷
        exec               运行容器中的命令或者链接容器
        help               查看帮助信息
        images             列出 compose 集群所用的镜像
        kill               kill 掉 compose 集群
        logs               获取 compose 集群日志
        pause              暂停 compose 集群
        ps                 列出正在运行的容器
        pull               拉取 compose.yml 文件中定义的全部 docker 镜像
        push               上传 compose.yml 文件中定义的全部 docker 镜像
        restart            重启 compose 集群
        rm                 删除一个中止的容器或者 compose 集群
        run                和 exec 相同
        scale              更改 compose 集群内指定的 services 的副本数量
        start              启动 compose 集群
        stop               中止 compose 集群
        top                显示 compose 集群中运行的进程及其状态
        unpause            恢复被暂停的 compose 集群
        up                 建立并启动一个 compose 集群
        version            输出 compose 版本
相关文章
相关标签/搜索