zoukankan      html  css  js  c++  java
  • Docker Swarm命令及使用总结

    一、简介

    Docker Swarm 是Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker资源。

    二、名词解释

    swarm:集群的管理和编排。docker可以初始化一个swarm集群,其它节点可以加入。
    node:每一个docker主机就是一个docker节点,分为 manager 节点和 worker 节点。
    manager node:负责执行容器的编排和集群的管理工作,保持并维护swarm处于期望的状态。swarm可以有多个manager node,他们会自动协调并选举一个leader执行编排任务。不能没有manager node。
    worker node:接受并执行由manager node派发的任务,并且默认manager node也是一个worker node,不过可以将它设置为manager-only node,让他只负责编排和管理工作。
    service:是指一组任务的集合,服务定义了任务的属性。
    task:是swarm中的最小调度单位,目前来说一个任务就是一个单一的docker容器。
     

    三、准备

    虚拟机三台,分别安装Docker并启动服务。服务网格信息如下:

    主机名 操作系统 IP Node
    vm-xwj100 Centos7.6 192.168.20.100 manager
    vm-xwj101 Centos7.6 192.168.20.101 worker
    vm-xwj102 Centos7.6 192.168.20.102 worker

     

     
     

    三、Swarm命令

    1、初始化manager节点:

    docker swarm init --advertise-addr 192.168.20.100

    会看到初始化成功,当前节点为manager节点。并且也提示了增加其它worker或者manager节点的命令,如下所示:

     2、在 vm-xwj101 和 vm-xwj102 主机上,作为一个worker节点加入swarm集群(复制上面的信息):

    docker swarm join --token SWMTKN-1-0szs8b7mg7ui5wtxlqcsp8ifr5yguvhw8314xd8v7o1zkro2t4-2qt8j8uqikxtb7tkdrypwqbw0 192.168.20.100:2377

    3、在manager节点,执行命令获取令牌(其它节点可以通过该令牌加入到集群中):

    docker swarm join-token manager         #作为一个manager加入
    docker swarm join-token worker          #作为一个worker加入

     可以看到worker节点的令牌,和第一步是一样的

    4、当前节点离开集群:

    docker swarm leave

    四、node命令

    注意:只有 manager 节点才可以执行 docker node 相关命令

    1、查看集群中的节点信息:

    docker node ls

    2、删除集群中的节点:

    docker node rm 节点名称    

    可选参数:

      -f           #强制删除节点(没有该参数只能删除已下线的节点)

    3、将节点从 worker 升级为 manager:

    docker node promote 节点名称

    4、将节点从 manager 降级为 worker:

    docker node demote 节点名称

    五、service命令

    注意:只有 manager 节点才可以执行 docker service 相关命令

    1、启动服务:

    docker service create [可选参数] 镜像名称

    可选参数:

    • --name my-nginx     #设置容器名称
    • --replicas 5              #副本数量(默认为1)
    • -p                             #指定服务端口(主机端口:容器端口)

     

     2、查看正在运行的服务

    docker service ls

    可以看到当前服务有3个副本以及镜像等信息

    3、查看某个服务运行状态

    docker service ps 服务名称

     可以看到每个节点上都有一个docker容器在运行(这个是随机分配的)。在每个节点上,直接docker ps 也可以看到容器的运行情况

    4、停止并删除某个服务(删除服务后,镜像也会全部被删除):

    docker service rm 服务名称

    5、修改某个服务副本数(扩缩容):

    docker service update --replicas 3 服务名称

     6、对某个服务扩缩容:

    docker service scale 服务名称=副本数

     六、测试

    集群中的任何一台主机都可以访问容器内的应用。在浏览器中分别访问100、101、102三台主机的8888端口,都可以看到nginx的页面:

    七、踩过的坑

    1、如果节点加入集群失败,需要执行如下操作:

         a、关闭所有主机的防火墙。命令:systemctl stop firewalld
         b、修改主机名(主机名不能一样)
         c、在 /etc/hosts 文件下,添加三台主机的域名解析

    2、扩容时,出现如下界面:

    解决办法:
    重启失败节点的docker服务:sudo systemctl restart docker
     

    知识改变世界
  • 相关阅读:
    shell 命令参数
    Windows系统配置Python环境,python2和python3共存
    jmeter面试题及答案
    接口测试
    python语法基础
    pycharm环境安装及注册
    Win10下python 2.7与python 3.6双环境安装图文教程
    eclipse中导入maven项目时pom文件报错
    ssm-crud项目--总结
    ssm-crud项目——分页查询
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/14618846.html
Copyright © 2011-2022 走看看