【Docker进阶】compose swarm

目录


1. Docker Compose

参考:

  1. 菜鸟: Docker Compose
  2. 狂神: docker进阶
  3. 官方文档: Docker Compose

1.1. 概述

  1. 概述

    1. Compose 是docker官方开源项目;
  2. 用途:

    1. Compose 是用于定义和运行多容器 Docker 应用程序的工具; – 高效管理容器;
    2. 通过 compose, 借助 YML文件 配置应用程序需要的所有服务, 使用一个命令就可以创建并启动YML文件中的所有服务; ---- 简单启用多个服务;
    3. 处理多个服务及依赖关系
    4. 区别:
      1. dockerfile 只能管理单个容器;
      2. compose 用于管理多个容器;
  3. Compose 使用步骤

    1. 使用 Dockerfile 定义程序的环境;
    2. 使用 docker-compose.yml 定义构成应用程序的服务, 在隔离环境中一起运行;
    3. 执行 docker-compose up 启动并运行整个程序;
  4. 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: {}
    

    docker-compose up : 可以一次启用100个服务;

  • Compose重要概念:
    1. 服务services: 容器, 应用 (web, redis, mysql)
    2. 项目project: 一组关联的容器;

1.2. 安装

  1. 步骤
    # 官网:
    # 其他
        sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    
    # 赋权
        sudo chmod +x /usr/local/bin/docker-compose
    # 验证
        docker-compose --version
        docker-compose version 1.16.1, build 1719ceb
    

1.3. 使用

1.3.1. 常用命令

  1. 基本命令
    docker-compose -h                           # 查看帮助
    
    docker-compose up                           # 创建并运行所有容器
    docker-compose up -d                        # 创建并后台运行所有容器
    docker-compose -f docker-compose.yml up -d  # 指定模板
    docker-compose down                         # 停止并删除容器、网络、卷、镜像。
    
    docker-compose logs       # 查看容器输出日志
    docker-compose pull       # 拉取依赖镜像
    dokcer-compose config     # 检查配置
    dokcer-compose config -q  # 检查配置,有问题才有输出
    
    docker-compose restart   # 重启服务
    docker-compose start     # 启动服务
    docker-compose stop      # 停止服务
    

2. Docker Machine


2.1. 概述

  1. 功能用途:
    1. 可以在虚拟主机上安装 docker 的工具; 可以使用 docker-machine命令来管理主机;
    2. 可以集中管理docker主机, 包括云供应商, 服务器本机;
    3. 使用 docker-machine 可以启动,检查,停止和重新启动托管主机,
      也可以升级 Docker 客户端和守护程序,以及配置 Docker 客户端与您的主机进行通信。

2.2. 安装


3. Swarm 集群管理

  • 容器编排才是目的; ==> 还是用K8S

3.1. 概述

  1. 功能用途:

    1. 是 docker 的集群管理工具;
    2. 将 docker 的主机池 转变为单个虚拟docker主机;
    3. 提供标准的 docker API, 所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机
    4. 支持的工具包括: (不限于以下:)
      1. dokku
      2. docker compose
      3. docker machine
      4. Jenkins
  2. 概念

    1. swarm:
      集群的管理和编号; docker可以初始化一个swarm集群, 其他节点可以加入; (管理, 工作者)
    2. Node:
      是一个docker节点; 多个节点组成一个网络集群;
    3. Service:
      任务, 可以在管理节点或是工作节点运行; ==> 核心, 用户访问;
    4. Task
      容器内的命令, 细节任务;
      20210704214742

3.2. 安装

3.2.1. 组建集群

  1. 概述
    1. 安装类似于 docker单机, 关键在于多态服务器 网络建立集群;
  • swarm集群
    1. 建议使用 3个及以上manager
    2. Raft 一致性协议
      20210703090734

参考:

  1. 官方: How nodes work

3.2.2. 网络模式

  • 网络模式
    1. Swarm :
    2. Overlay :
    3. ingress : 特殊的Overlay网络, 负载均衡的功能, IPVS VIP

3.3. docker-swarm 命令

3.3.1. 基本命令:

  1. 全部命令
    [root@rh25 ~]# docker swarm --help
    
    Usage:  docker swarm COMMAND
    Manage Swarm
    Commands:
    ca          Display and rotate the root CA
    init        Initialize a swarm
    join        Join a swarm as a node and/or manager
    join-token  Manage join tokens
    leave       Leave the swarm
    unlock      Unlock swarm
    unlock-key  Manage the unlock key
    update      Update the swarm
    Run 'docker swarm COMMAND --help' for more information on a command.
    

3.3.2. 命令实战

  1. 常用命令
    'docker swarm COMMAND --help'  #查看详细内容
    == 初始化
        docker swarm init --advertise-addr ip
    
    == 添加节点 ==
        # 获取令牌
        docker swarm join-token manager    # 生成命令,执行可添加manager --> leader
        docker swarm join-token worker
    

3.4. 集群构成

  • swarm manager: 负责集群的管理工作(manager) 和 工作节点(work node)
  • work node: 主要负责运行相应的服务 执行任务(task);

3.4.1. swarm manager

  1. 常用命令:
    ==== 集群管理: ====
    == 查看 ==
    # 查看当前集群信息
        docker info
    # 查看所有节点
        docker node ls
    
    # 启停某个节点
        docker node update --availability active swarm-worker1  # 激活启动节点  swarm-worker1: 节点名称;
        docker node update --availability drain  swarm-worker1  # 停止该节点
    
    
    ==== 服务管理 ====
    docker service --help
        Usage:  docker service COMMAND
        Manage services
        Commands:
        create      Create a new service
        inspect     Display detailed information on one or more services
        logs        Fetch the logs of a service or task
        ls          List services
        ps          List the tasks of one or more services
        rm          Remove one or more services
        rollback    Revert changes to a service\'s configuration
        scale       Scale one or multiple replicated services
        update      Update a service
    
    # == 创建服务
        docker service creat
    
        # ==注意:==
        docker run    #容器启动! 不具有扩缩容器
        docker service  # 服务,  具有扩缩容器, 滚动更新
    
    # == 查看服务
    
        # 查看服务部署
            docker service ps  servicename
            docker service inspect --pretty    # 查看服务部署的具体信息
    
    # == 扩展服务
        # 扩展服务到两个节点
            docker service scale servicename=2
    
    
    # == 删除服务
        docker servce rm  name
    
    # == 滚动升级服务
    
    # == 动态扩缩容
        # my-nginx 动态扩缩容
        docker service update --relipcas 3 my-nginx
        docker service scale my-nginx=5
    
    

3.4.2. work node

3.4.3. Raft协议

  • 双主双从: 假设一个节点, 其他节点可以用;

  • Raft协议: 保证大多数节点存活才可以用, 只要 >1 管理节点, 集群至少3个主节点;

    • 保证主节点可用;
    • 高可用

注:

  1. zookeeper 是 zab 算法;
  2. 扩缩容, 高可用, 集群

3.5. 拓展

3.5.1. docker stack

  • docker-compose 单机部署项目

  • docker stack部署 集群部署

    # 单机
        docker-compose up -d xxx.yaml
    # 集群
        docker stack deploy xxx.yaml
    

3.5.2. docker secret

  • 安全, 配置密码, 证书;

    docker secret --help
        Usage:  docker secret COMMAND
        Manage Docker secrets
        Commands:
        create      Create a secret from a file or STDIN as content
        inspect     Display detailed information on one or more secrets
        ls          List secrets
        rm          Remove one or more secrets
    

3.5.3. docker config

  • 用于配置

后面用到再补充
==> K8S

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值