docker compose的用处是对 Docker 容器集群的快速编排。(源码)
一个 Dockerfile 可以定义一个单独的应用容器。但我们经常碰到需要多个容器相互配合来完成某项任务的情况(如实现一个 Web 项目,需要服务器、数据库、redis等),Compose 刚好允许通过一个单独的 docker-compose.yml 文件来定义一组相关联的应用容器为一个项目(project)。
安装完docker(http://t.csdnimg.cn/QLyPN)后就已经完成了compose的安装了,也可从Releases · docker/compose (github.com)仓库单独安装docker compose。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose 项目实现上是调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
使用docker compose启动一个python服务器,访问后可显示访问次数。
服务器源码:(对"/"路径建立路由,访问后调用hello函数,在redis中给hits的value+1,然后输出到网页)
- 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,已被访问{}次。\n'.format(count)
-
- if __name__ == "__main__":
- app.run(host="0.0.0.0",debug=True)
Dockerfile:
- FROM python:3.6-alpine
- ADD . /code
- WORKDIR /code
- RUN pip install redis flask
- CMD ["python", "app.py"]
docker-compose.yml:
- version: '3'
- services:
-
- web:
- build: .
- ports:
- - "5000:5000"
-
- redis:
- image: "redis:alpine"
然后启动容器:sudo docker compose up
即可启动项目,访问5000端口:
docker compose up命令会构建镜像,创建网络、卷,并启动容器,容器名称以项目名称(目录名称)为前缀,以一个数子为后缀(Docker Compose允许扩缩容);创建的镜像、容器、网络和卷可直接使用docker命令进行查看。
上述项目执行down后:
过程:
查看项目状态:
显示容器名称、其中运行的Command、当前状态以及其监听的网络端口。
列出各个服务(容器)内运行的进程。(PID编号为在宿主机上的进程ID。)
停止应用(关闭服务),不删除资源:
启动停止的应用。
重启应用。
删除已经停止的应用(仅容器和网络)。
建议查看:Compose 模板文件 | Docker 从入门到实践
建议最好还是配合chatgpt进行编写,直接手写可能每一步都会报问题(〃'▽'〃)