一、安装compose
当我在进行docker容器管理的时候,针对打个容器,比较好操作,如果容器过多,各种不一样的容器怎么进行同一管理,这尤为重要,所以compose,技术可以帮我去实现这样的功能,他采用yaml文件方式,用户只需要编写好对应的yaml文件,然后执行这个文件即可。
第一步需要按照compose组件,依然从官方教程获取
首先:通过如下命令获取稳定版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
然后:赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
可以通过docker-compose --version查看当前是否安装成功
二、样例
此时,我们跟着官方文档去实现一个样例
第一步:创建一个composetest文件夹,然后进入到这个文件夹
mkdir composetest
cd composetest
第二步:新建一个app.py的文件并写入以下内容
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
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()
return 'Hello World! I have been seen {} times.\n'.format(count)
上边这段程序的大致含义就是,通过redis保存每次访问的次数
第三步:创建一个requirements.txt文件,并写入以下内容
flask
redis
第四步:创建一个Dockerfile文件,写入以下内容
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
这一步是把当前的app.py应用打包成一个镜像
第五步:编写docker-compose.yml文件,并写入以下内容
version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"
表示当前有两个服务,一个web、一个是redis
第六步:通过docker-compose up启动容器
可以发现此时启动成功,然后通过端口映射的8000端口访问的时候,可以得到对应的输出
到此,我们可以发现docker-compose 可以帮助我们去构建对应的容器管理方案,只需要编写相应的yaml文件即可,关于具体怎么编写这个文件,可以参考官方文档
以及具体的命令可以查看帮助文档docker-compose --help
三、总结
本文简单介绍了docker-compose,以及根据官方文档实现了一个样例,接下来将继续学习docker的其它相关知识。
以上,有任何不对的地方请指正,谢谢!