docker笔记6--Docker Swarm常见操作

简介

swarm介绍

swarm 包含多个运行在swarm mode下的docker host,这些hoshs包括manager和worker角色。没给你host既可以做为manager,也可以作为worker,或者2者都可以。
当创建一个服务的时候,即定义了一个最佳的状态,包括服务replicas、网络、存储、以及暴露给外面的端口等资源。docker用于维护需要的状态,如果一个节点不可用,docker将调度该节点的任务到其他节点。

节点介绍

节点即为加入swarm集群中的docker实例(docker 节点)。
当实施一个应用到swarm时候,就需要提交一个服务的定义到管理节点(manager node),管理节点就会分配工作单元(task)到对应的工作节点(work node).
工作节点接受并执行来自于管理节点的任务,默认情况下管理节点也作为一个work节点跑对应的服务,但实际中可以配置service不运行在manager上,使manager仅仅充当管理角色。worker节点会定期向manger通知分配的任务状态,以便于manager能维护每个worker需要的状态。

服务和任务

service是需要执行在各个节点上任务的定义。它是swarm系统的核心结构,也是用户和swarm交互的主要方式。当创建1个服务的时候,通常会指定容器镜像和容器内部执行的命令。
一个任务包含了一个docker 容器和y一些跑在容器内部的命令, 它是swarm调度的原子单元。 管理节点根据服务中replicas的规模,将任务分配到各个工作节点。一旦一个任务分配到某个节点,它就不能移动到另外及诶单,除非该任务失败。

负载均衡

管理节点使用ingress load balancing 来暴露服务,从而使外部到swarm为可用状态。在用户没有指定端口的情况下,swarm manager节点默认为服务分配一个PublishedPort,通常在30000-32767 范围内。
Swarm mode 拥有一个内部DNS不见,用于自动地分配每个服务一个DNS实体。基于服务的DNS名称,swarm 管理节点在集群内部服务之间用 internal load balancing 来分发请求。

swarm集群搭建

通过以下3个步骤即可搭建一个swarm集群了,后续可以根据需要增删节点,改变节点角色。

  1. swarm初始化
    $ docker swarm init
    Swarm initialized: current node (p2phyrhwcp3k155gu24cci89x) is now a manager.
    To add a worker to this swarm, run the following command:
        docker swarm join --token SWMTKN-1-5ig1j6az5r0wah7bq3qs3q5zv8iaz4kmubvj79rvns807f3vcm-dza07w1gla63weerzmfaq34xb 10.120.75.102:2377
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions
    
  2. 添加节点到集群
    \# docker swarm join --token SWMTKN-1-5ig1j6az5r0wah7bq3qs3q5zv8iaz4kmubvj79rvns807f3vcm-dza07w1gla63weerzmfaq34xb 10.120.75.102:2377
    This node joined a swarm as a worker.
    
  3. 提升work节点为manager
    查看当前节点状态:
    $ docker node ls
    ID                            HOSTNAME                          STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    p2phyrhwcp3k155gu24cci89x *   test01   Ready               Active              Leader              19.03.8
    hwkcculi3kop48g75k88mc110     test02   Ready               Active                                       19.03.11
    rr7nl5cd5yecv5nklfsr9bpzg     test03   Ready               Active                                       19.03.8
    
    执行docker node demote <node id>将 manager 节点 demote 为 worker 节点
    执行docker node promote <node id>将 worker 节点 promote 为 manager 节点
    $ docker node promote hwkcculi3kop48g75k88mc110
    Node hwkcculi3kop48g75k88mc110 promoted to a manager in the swarm.
    promte后全部为leader,一般建议至少3个基数节点作为leader
    

常用命令

  1. swarm init
    swarm 集群初始化,具体命令见 swarm初始化
  2. swarm join
    节点加入集群,在任意一个manager上执行皆可,具体见 添加节点到集群
  3. service create
    新建服务
    新建一个服务,名称为reids
    docker service create --name redis redis:3.0.6 
    新建一个服务,3个replica,名称为redis3
     docker service create --name redis3 --replicas=3 redis:3.0.6
    
    service_create
  4. service inspect
    #docker service inspect redis
    #docker service inspect redis --pretty
    添加–pretty后,以比较友好的方式输出容器信息
    在这里插入图片描述
  5. service ls
    ls 查看所有服务
    #docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    ckipvhtby52z        redis               replicated          1/1                 redis:3.0.6         
    gmi00f0g7enf        redis3              replicated          3/3                 redis:3.0.6   
    #docker service ls -q n只列出IDs
    
  6. service rm
    删除redis3 服务
    #docker service rm redis3
  7. service scale
    将redis服务扩容为2个
    #docker service scale redis=2 -d
  8. service ps
    列出redis的所有服务, -q参数使之只列出IDs
    #docker service ps redis
    #docker service ps redis -q
  9. service update
    1)限制cpu为2
    # docker service update --limit-cpu 2 redis
    2)添加8079映射到容器内6379端口
    # docker service update --publish-add published=8079,target=6379 redis
    service_update

说明

docker swarm
key-concepts

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值