Docker-12-docker-compose

448 阅读2分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。

在实际业务使用中,我们通常需要对大量的容器进行管理和编排,即实现容器集群的蓝图,今天我们就一起来了解 Docker 官方的编排工具之 docker-compose

安装

docker-compose 是一个二进制文件

apt-get install docker-compose

安装完后查看版本信息

root@phyger-xubuntu:/home/phyger/docker-cps# docker-compose version
docker-compose version 1.17.1, build unknown
docker-py version: 2.5.1
CPython version: 2.7.17
OpenSSL version: OpenSSL 1.1.1  11 Sep 2018
root@phyger-xubuntu:/home/phyger/docker-cps#

准备工作

准备一个安装了 python3 的镜像,当然你也可以在 Dockerfile 中实现

image

创建工作目录,即 docker-compose 的项目

mkdir /home/phyger/docker-cps

在工作目录下创建一个 app

#!/usr/bin/python3

from flask import Flask

app = Flask(__name__)
count = 0

@app.route('/')
def hello():
    global count
    count += 1
    return 'Hello World! 该页面已被访问 {} 次。\n'.format(count)


if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

在工作目录下创建 Dockerfile

FROM alpine_py:v1
ADD . /code
WORKDIR /code
ENTRYPOINT ["python", "app.py"]

在工作目录下创建 docker-compose.yml

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

启动这个项目

docker-compose up  <-d>

启动

测试服务

测试服务

docker-compose 项目启动分析

docker-compose 调用 Dockerfile 进行项目所需镜像构建,然后使用 docker-compose 编排文件对项目进行编排和管理。即镜像构建使用 Dockerfile 功能,自己只专注业务容器编排。

docker-compose 和 k8s

docker-compose 是对多个容器进行编排和管理的工具,而 k8s 是可以实现跨服务,跨机器对多个容器进行编排,同时其拥有多种控制器类型,可以实现更可靠的容器服务。

它们两种都是常用的服务承载方式,我们可以根据实际需求进选择,通常小型单机服务我们选择简单省资源的 docker-compose,大型分布式我们选择 k8s