欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker compose

程序员文章站 2022-06-07 08:47:49
...

任务编排介绍

场景:
我们在工作中为了完成业务目标,首先把业务拆分成多个子任务,然后对这些子任务进行顺序组合,当子任务按照方 案执行完毕后,就完成了业务目标。

任务编排,就是对多个子任务执行顺序进行确定的过程。

常见的任务编排工具

  • 单机版:
    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
查看运行效果:

docker-compose ps

Docker compose

相关命令

后台启动: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
进入服务容器:docker-compose exec <服务名> <执行命令>
Docker compose
查看服务网络: docker network ls
Docker compose
可以用 docker-compose --help 查看其它命令。

示例2 Django项目

需求: 自动部署一个集群,使用 nginx 代理两个项目
流程分析:

  1. Django项目部署
  2. nginx代理部署
  3. docker 环境
  4. 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