「这是我参与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 中实现
创建工作目录,即 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。