1. 简介
以前手动操作单个容器 DockerFile bulid run
Docker Compose轻松高效管理容器,定义运行多个容器。
Docker Compose是Docker官方开源项目,需要安装。
DockerFile让程序在任何地方运行。Web服务、Redis、mysql、nginx...多个容器。
docker-compose.yml
version: "3.9" # optional since v1.27.0 services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}
2. 安装Docker Compose
2.1 下载
# 1.官方下载方式,我采用的是官方的 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 curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
查看
2.2 授权
$ sudo chmod +x /usr/local/bin/docker-compose
2.3 查看
docker-compose --version
3. 体验
3.1 创建文件夹
$ mkdir composetest $ cd composetest
3.2 创建测试文件
-
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)
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"]
3.3 创建 Compose 文件
创建文件
docker-compose.yml
version: "3.9" services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
3.4 构建运行app,运行compose
当前文件夹下运行
root@docker:/home/composetest# docker-compose up
启动成功如图
刷新一下,变成了2次
查看镜像
- 自动下载了相关镜像
查看运行的容器
查看网络规则,compose帮助创建了网络
- 应用app.py
- Dockerfile 应用打包为镜像
- Docker-compose.yml文件(定义整个服务,需要的环境。web、redis)完整的上线服务
- 启动compose项目(docker-compose up)
3.5 停止
Ctrl + C
# 后台启动 docker-compose up -d # 关闭后台启动 docker-compose stop
流程:
- 网络
- 执行Docker-compose.yml
- 启动服务
配置信息
- Yaml规则
# 3层 version: '' # 版本 service: # 服务 服务1:web # 服务配置 images build network ... 服务2: redis 服务3: redis # 其他配置 网络、卷、全局规则 volumes: nrework: config: