• Docker Swarm集群搭建以及服务命令操作


    一、docker swarm集群搭建

    环境:
    主节点manager192.168.1.88
    从节点node192.168.1.99
    实际上manager也是一个node,manager获取客户端请求,对从节点进行调度工作

    1.创建主节点

    docker swarm init --advertise-addr 192.168.1.88
    
    • 1

    执行完成会出现一个注册从节点的命令
    在这里插入图片描述

    2.注册从节点
    将上述命令在192.168.1.99上注册

    docker swarm join  --token SWMTKN-1-3mhx8nr3g3w1gc6uxyztzoys1v49e8lhqndj6pindvirhzlylk-2ebgshiazezm66cfxhyr6pjth 192.168.1.88:2377
    
    • 1

    显示注册成功
    在这里插入图片描述

    二、使用集群

    在使用之前先看看docker集群swarm的一些命令,其实它的命令和docker的某些命令非常相似,只是多加了一个service
    在这里插入图片描述
    docker service [commond]

    命令用途
    create创建新服务
    inspect展示一个或多个服务的详细信息
    logs查看服务的日志
    ls列出服务
    ps根据名称列出服务
    rm删除一个或多个服务
    ps缩放一个或多个复制服务
    update更新服务

    1.查看当前节点信息

    docker node ls
    
    • 1

    2.查看当前网络信息

    docker network ls
    
    • 1

    3.创建一个私有网络,供不同节点互通使用

    docker network create -d overlay new_network
    
    • 1

    4.使用创建的网络部署服务
    此处创建一个使用net_network网络且名为my_nginx的服务
    –replicas 参数来指定此服务在工作节点上运行的任务数。此处表示一个

    docker service create --replicas 1 --network new_network --name my_nginx -p 80:80 nginx:latest
    
    • 1

    5.查看运行的服务列表

    docker service ls
    
    • 1

    在这里插入图片描述
    6.查看服务在哪个节点运行

    docker service ps my_nginx
    
    • 1

    在这里插入图片描述
    7.动态扩容服务数量

    docker service scale my_nginx=2
    等同于命令docker service update --replicas 3 my_nginx
    
    • 1
    • 2

    在这里插入图片描述
    8.下线/上线节点
    下线节点,下线后不参与任务分派,但是如果它原本有容器,那么这些容器会转移到其他可用节点上

    docker node update --availability drain node2
    
    • 1

    在这里插入图片描述

    上线节点

    docker node update --availability active node2
    
    • 1

    9.移除任务,删除所有容器

    docker rm  my_nginx
    
    • 1

    在这里插入图片描述
    10.节点离开集群

    docker swarm leave (在要离开的节点上运行,在主节点执行则是删除集群)
    
    • 1

    三、服务和容器的区别

    以mysql搭建为例,正常我们使用docker,搭建命令如下:

    docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql -v /home/mysql/logs:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    
    • 1

    如果我们用服务创建,则命令如下:

    docker service create --name=mysql -p 3306:3306 --mount type=bind,src=/home/mysql/logs,dst=/var/log/mysql --mount type=bind,src=/home/mysql/data,dst=/var/lib/mysql --mount type=bind,src=/home/mysql/conf,dst=/etc/mysql --env MYSQL_ROOT_PASSOWORD=123456 mysql:5.7
    
    • 1

    不难看出来,差别还是挺大的,对应命令下表:

    dockerswarm
    docker rundocker service create
    -p-p
    -v—mount type=bind,src=,dst=
    -e–env

    四、指定节点运行服务

    mysql服务搭建好以后又来了一个问题,我部署服务的时候,它自动给我分配节点,可是我想要指定节点,就需要给每个节点打上标签,在运行服务的时候,指定标签。

    1.打标签

    docker node update --label-add func=node node1
    #func=node是自己指定的键值对,也可以指定其他的,在调用的时候注意替换就好了,node1是我们集群中hostname的名称
    
    • 1
    • 2

    2.使用标签指定主机
    还是以mysql为例
    加上–constraint ‘node.labels.func == node’

    docker service create --name=mysql -p 3306:3306 --constraint 'node.labels.func == node'
     --mount type=bind,src=/home/mysql/logs,dst=/var/log/mysql --mount type=bind,src=/home/mysql/data,dst=/var/lib/mysql --mount type=bind,src=/home/mysql/conf,dst=/etc/mysql --env MYSQL_ROOT_PASSOWORD=123456 mysql:5.7
    
    • 1
    • 2

    其它还有更多用法正在完善中

  • 相关阅读:
    【单链表基本操作的实现】
    网络I/O模型 解读
    新手开抖店——一定忽略的“发货”问题,违规必扣保证金!
    Flink 状态编程
    苹果签名应用掉签频繁原因排查,以及如何避免
    Python内置函数hex()详解
    我做了一个世界杯的可视化网站...
    进程地址空间
    IDEA控制台中文乱码
    react的different算法
  • 原文地址:https://blog.csdn.net/weixin_43909848/article/details/125479527