• docker-compose


    docker compose:管理单节点容器

    缺点:只能管理本机的,不能管理其他节点的

    docker-compose简介

    开源项目,负责实现对Docker容器集群的快速编排

    可以简化docker容器的管理,使得多个容器之间的部署,连接变的更加的简单可靠,同时还能够实现服务自动扩展和容器的定期更新等功能

    此外还支持设置各种容器之间的依赖关系 ,比如启动数据库容器才能启动应用容器

    一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。

    Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

    使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

    Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

    Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理

    将所管理的容器分为三层:

    工程(project) 服务(service) 容器(container)

    使用 yml时需要注意下面事项:

    • 大小写敏感

    • 不支持制表符 tab 键缩进,只能使用空格缩进

    • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格

    • 用 # 号注释

    • 符号字符后缩进1个空格,如冒号 : 逗号, 横杠-

    • 如果包含特殊字符用单引号(‘’)引起来会作为普通字符串处理,双引号(" "):特殊字符作为本身想表示的意思

    docker compose内部控制参数

    1. name

    2. 自定义挂载

    3. 自定义ENV 环境变量 【运行前——> 自定义网络】

    4. 自定义端口

    5. 自定义传参 【运行后】

    docker-compose命令

    build : 描述

    ps : 重新构建服务

    up :创建和启动容器

    exec :在容器里面执行命令

    scale :指定一个服务容器启动数量

    top :显示容器进程

    logs :日志

    down :删除容器、网络、数据卷、镜像

    stop/start :停止/启动服务

    restart :重启服务

    • no:默认策略

    • on-failure:在容器非正常退出时(状态非0),才会重启容器

    • on-failure:3 :在容器非正常退出时重启容器,最多重启3次

    • always:在容器退出时总是重启容器

    • unless-stopped:在容器退出时总是重启,但不考虑在docker守护进程启动时就已经停止了

    Docker Compose配置常用字段

    servies:服务模块 【nginx、mysql、php】

    container_name:容器名

    build:指定dockerfile文件名

    centext:指定dockerfile文件的路径

    dockerfile:指定文件名Dockerfile

    ports:开启端口

    networks:加入网络

    volumes:挂载

    networks:网络模块

    driver:网络模式

    compose 部署
    1. 1. Docker Compose 环境安装
    2. #下载
    3. curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    4. chmod +x /usr/local/bin/docker-compose
    5. docker-compose --version #查看版本 。

    docker-compose部署lnmp

    下载docker-compose并赋予执行权限

    Consul:注册和发现

    consul是一个基于分布式的服务发现和配置管理工具。

    它具有快速构建分布式架构提供服务发现和服务治理等功能的特点

    同时consul还提供了可靠的保证,多数据中心和强大的API以满足高可用、分布式环境下的需求

    consul的工作:

    1. 动态服务发现:服务发现是指在分布式计算环境下,自动发现可用在服务实例,并将其注册到 consul 上,以便其他服务调用

    2. 动态配置管理(temlate):配置管理是指通过通过 consul 动态更新分布式架构中配置信息【包括:环境变量、属性值、文件、数据库等】

    consul 可以与多种不同的服务一起使用,包括 kubernetes、dicjer、mescos等,因此 consul 成为分布式系统中心不可少的的一部分

    8300:replication【副本代表同步】、leader【领导者】、farwarding【转发】的端口

    8301:lan cossip的端门【内部同一数据中心端口通信】

    8302:wan qossip的端口【不同数据中心端口通信】

    8500:web ui界面的端口【用于http接口和web】

    8600:使用dns协议查看节点信息的端口【用于已注册的服务发现】

    consul agent 的 server模式

    数据流向:

    数据流向:

    nginx和apache会将数据写入到docker.sock文件中,redistraror会对docker.sock文件自动监控,如果文件发生改动,并将其注册到 consul服务器中的自动注册模块,进行web的ui界面展示

    consul-template

    Consul-Template是基于Consul的自动替换配置文件的应用。Consul-Template是一个守护进程,用于实时查询Consul集群信息,并更新文件系统上任意数量的指定模板,生成配置文件。

    consul服务器部署
    1. unzip consul_0.9.2_linux_amd64.zip 解包
    2. mv consul /usr/local/bin
    3. #设置代理,在后台启动 consul 服务端
    4. consul agent \
    5. -server \
    6. -bootstrap \
    7. -ui \
    8. -data-dir=/var/lib/consul-data \
    9. -bind=192.168.86.44 \
    10. -client=0.0.0.0 \
    11. -node=consul-server01 &> /var/log/consul.log &
    1. #查看members状态
    2. consul members

    1. #查看集群状态
    2. 1、consul operator raft list-peers
    3. 2、consul info | grep leader

     

    1. 节点服务器 registrator部署
    2. #1、安装 Gliderlabs/Registrator
    3. docker run -d \
    4. --name=registrator \
    5. --net=host \
    6. -v /var/run/docker.sock:/tmp/docker.sock \
    7. --restart=always \
    8. gliderlabs/registrator:latest \
    9. --ip=本机IP地址 \
    10. consul://consulIP地址:8500
    11. #2、测试服务发现功能是否正常【-h:设置容器主机名】
    12. docker run -itd -p:83:80 --name test-01 -h test01 nginx
    13. docker run -itd -p:84:80 --name test-02 -h test02 nginx
    14. docker run -itd -p:88:80 --name test-03 -h test03 httpd
    15. #3、验证 http 和 nginx 服务是否注册到 consul
    16. 浏览器访问consulIP地址:8500192.168.86.44:8500
    17. 点击 NODES(节点),然后单击“consurl-server01
    18. #在consul服务器使用curl测试连接服务器
    19. curl 127.0.0.1:8500/v1/catalog/services

    停止registrator服务器中的conmose-lnmp_php容器,再去web查看,可以看见conmose-lnmp_php容器不在了

  • 相关阅读:
    buuctf-web-p6 [NPUCTF2020]web 狗
    vue 权限分组
    Node.js事件循环
    C++11 线程库
    故障分析 | xtrabackup 多表备份报错“ too many open files ”
    GO微服务实战第二十九节 如何追踪分布式系统调用链路的问题?
    unity 血条跟随
    【数据结构与算法】之深入解析“粉刷房子”的求解思路与算法示例
    【动画进阶】极具创意的鼠标交互动画
    c++实现简单股票买入和撤销功能(demo)
  • 原文地址:https://blog.csdn.net/2301_78069073/article/details/133775218