zoukankan      html  css  js  c++  java
  • Docker Swarm 资源管理

    Docker Swarm

    Docker Swarm是Docker官方项目之一,是使用SwarmKit构建的Docker引擎内置的集群管理和编排工具,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型虚拟Docker主机,快速打造一套容器云平台。

    节点

    运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已经存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点 node。

    节点分为管理节点 manager 和工作节点 worker
    管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行
    工作节点是任务执行节点,管理节点将服务 service 下发到工作节点执行

    img

    服务与任务

    任务 task 是Swarm中最小的调度单位,目前来说就是一个单一的容器
    服务 service 是指一组任务的集合,服务定义了任务的属性

    服务有两种模式:

    • replicated services 按照一定规则在各个节点上运行指定个数的任务
    • global services 每个工作节点上运行一个任务

    这两种模式可以通过docker service create 的 —mode参数指定

    img

    Docker Swarm集群搭建

    在Docker服务器上使用 docker swarm init 在初始化一个Swarm集群:

    docker swarm init --advertise-addr 192.168.xx.xxx
    

    img

    执行docker swarm init命令的节点自东成为管理节点,同时该命令执行后会打印添加工作节点的命令,将该命令拷贝到工作节点执行后就可以将工作节点添加到Swarm集群中。如果忘记了添加工作节点的命令可以通过 “docker swarm join-token worker” 进行查看。在添加工作节点时可能会添加失败,可以先查看下防火墙,Swarm节点之间通过TCP/UDP进行通信,要确保端口2377,7946,4789是可以通信的,测试环境可以关闭防火墙,重启Docker服务。

    这样一个管理节点,两个工作节点的Swarm最小集群就搭建完毕

    img

    Swarm集群部署服务

    使用docker service命令可以管理Swarm集群中的服务,该命令只能在管理节点运行。
    在Swarm集群中创建一个nginx服务,服务创建前确保每个节点:

    docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
    

    使用 “docker service ls ” 和 “docker service ps ”命令可以查看运行的服务
    服务正常启动后输入任意节点的IP都可以访问nginx服务

    img

    Swarm图形化资源管理工具

    portainer是Docker图形化管理工具,提供了详细的状态显示面板,应用模板快速部署,容器/镜像/数据卷等的基本操作,事件日志的查看显示,Swarm集群和服务的集中管理,以及用户管理等功能

    运行portainer:

    # 拉取镜像
    docker pull portainer/portainer
    
    # 运行
    docker run -d -p 9000:9000 
    --name portainer --restart=always 
    -v /var/run/docker.sock:/var/run/docker.sock 
    portainer/portainer
    

    portainer容器启动后就可以在浏览访问,首次登录需要设置admin用户密码

    img

    portainer容器运行在Swarm管理节点上,选择local连接后就进入以下页面

    img

    点击local后进入详细页面,包含了主机上Docker的镜像,容器,数据卷,Swarm集群信息等

    img

    Swarm集群信息 

    img

    服务信息,在这里可以进行服务的创建,扩容,删除等操作

    img

  • 相关阅读:
    获取连接无线路由客户机信息命令
    HTB进行流量控制方法
    exec函数族用法
    java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    struts2从请求取值的三种方式
    用jsp写的网页 怎么在传递参数时包含中文?
    Struts2使用DoubleSelect实现二级级联下拉框省份城市
    MySQL里主键与外键的关系
    查看struts2源码
    WIN7系统下,用笔记本发送WIFI信号让手机无线上网!
  • 原文地址:https://www.cnblogs.com/coding-diary/p/12669329.html
Copyright © 2011-2022 走看看