Docker compose
任务编排介绍
场景:
我们在工作中为了完成业务目标,首先把业务拆分成多个子任务,然后对这些子任务进行顺序组合,当子任务按照方 案执行完毕后,就完成了业务目标。
任务编排,就是对多个子任务执行顺序进行确定的过程。
常见的任务编排工具
- 单机版:
docker compose - 集群版:
Docker swarm —> Docker
Mesos —> Apache
kubernetes —> Google
什么是 docker compose
Docker compose是一种docker容器的任务编排工具。
官方地址:https://docs.docker.com/compose/
本质: docker 工具
对象: 应用服务
配置: YAML 格式配置文件
执行: 定义和运行容器
实例 1
目的 : 启动两个 nginx 服务。
docker-compose.yml 文件内容:
version: '2'
services:
web1:
image: nginx
ports:
- "9999:80"
container_name: nginx-web1
web2:
image: nginx
ports:
- "8888:80"
container_name: nginx-web2
加上 -d 参数在后台启动, 如果不加 -d 参数就会卡在前台
docker-compose up -d
查看运行效果:
docker-compose ps
相关命令
后台启动:docker-compose up -d
删除服务: docker-compose down
查看正在运行的服务: docker-compose ps
启动一个服务: docker-compose start <服务名>
停止一个服务: docker-compose stop <服务名>
上面两项如果后面不加服务名字,会启动和停止所有的服务。
删除服务: docker-compose rm <服务名>
但是 docker-compose rm 不会删除对应的网络和数据卷
查看正在运行的服务 : docker-compose ps
查看运行服务的日志: docker-compose logs -f
加上 -f 选项,可以持续跟踪服务产生的日志
查看服务依赖的镜像: docker-compose images
进入服务容器:docker-compose exec <服务名> <执行命令>
查看服务网络: docker network ls
可以用 docker-compose --help 查看其它命令。
示例2 Django项目
需求: 自动部署一个集群,使用 nginx 代理两个项目
流程分析:
- Django项目部署
- nginx代理部署
- docker 环境
- docker compose 任务编排
技术点分析:
- Django 项目部署
Django 项目基础环境
Django 项目配置 - nginx代理部署
nginx的配置文件 - docker环境
docker 基础镜像
Django镜像
nginx镜像 - docker compose 任务编排
4个任务: 一个镜像构建任务,2个Django任务
任务依赖: Django镜像依赖于基础镜像完毕
步骤:
1 创建目录: mkdir project
2 创建 nginx 目录: cd project; mkdir nginx; cd nginx
3 生成 nginx 负载均衡配置: nginx-django.conf
upstream django {
server 192.168.233.56:10086;
server 192.168.233.56:10087;
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://django;
index index.html index.htm; }
}
4 生成Django基础镜像依赖文件:
mkdir django-base; cd django-base
5 创建Dockerfile
…