当前位置:   article > 正文

docker(九)—docker swarm使用

docker swarm使用

1:什么是Docker Swarm

   Swarm是Docker公司推出的用来管理docker集群的平台,Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合

2:Docker Swarm的几个概念

     2.1:Swarm

           是用来管理docker机器集群的管理和编排,可以在docker初始化时启动swarm模式或者加入已存在的swarm

      2.2:Node:

          一个节点是docker引擎集群的一个实例。您还可以将其视为Docker节点。您可以在单个物理计算机或云服务器上运行一个或多个节点,
但生产群集部署通常包括分布在多个物理和云计算机上的Docker节点。
要将应用程序部署到swarm,请将服务定义提交给 管理器节点。管理器节点将称为任务的工作单元分派 给工作节点。
Manager节点还执行维护所需群集状态所需的编排和集群管理功能。Manager节点选择单个领导者来执行编排任务。
工作节点接收并执行从管理器节点分派的任务。默认情况下,管理器节点还将服务作为工作节点运行,
但您可以将它们配置为仅运行管理器任务并且是仅管理器节点。
代理程序在每个工作程序节点上运行,并报告分配给它的任务。工作节点向管理器节点通知其分配的任务的当前状态,
以便管理器可以维持每个工作者的期望状态。

       2.3:Service

             一个服务是任务的定义,管理机或工作节点上执行。它是群体系统的中心结构,是用户与群体交互的主要根源。创建服务时,你需要指定要使用的容器镜像。

     2.4:Task
            任务是在docekr容器中执行的命令,Manager节点根据指定数量的任务副本分配任务给worker节点.

 3:集群的创建

      3.1:准备3台虚拟机

               node1:192.168.195.10 master

               node2:192.168.195.11 worker

               node3:192.168.195.12 worker

              以上3台机器实现一主二从的集群模式

    3.2:关闭三台虚拟机的防火墙或者开放 

             关闭三台机器上的防火墙。如果开启防火墙,则需要在所有节点的防火墙上依次放行2377/tcp(管理端口)、7946/udp(节点间通信端口)、4789/udp(overlay 网络端口)端口。

     关闭防火墙的命令:

  1. systemctl disable firewalld.service
  2. systemctl stop firewalld.service

    3.3:在192.168.195.10 虚拟机上使用如下命令创建集群

docker swarm init --advertise-addr 192.168.195.10

  执行完成后得到如下图所示的加入集群的命令行 分别 在192.168.195.11,192.168.195.12

  机器上执行如图所示红线部分的命令 即可加入集群

 4:通过docker node ls 来查看集群是否成功 如出现如下图所示则表示创建集群成功

 5:docker-swarm 常用命令

  5.1: 初始化集群环境 

         docker swarm init --advertise-addr 192.168.31.43

  5.2:这里的leave就是在集群中删除节点,-f参数强制删除,执行完在重新执行O

         docker swarm leave -f

  5.3:查看集群的相关信息

         docker info

  5.4:上面的命令是查看集群中的机器(注意上面node ID旁边那个*号表示现在连接到这个节点上)

         docker node ls

  5.5:加入集群节点 作为工作节点

        docker swarm join --token SWMTKN-1-2lefzq18zohy9yr1vskutf1sfb2a590xz9d0mjj2m15zu9eprw-2938j5f50t35ycut0vbj2sx0s 192.168.195.10:2377

   5.6:查看加入集群节点的ml

         docker swarm join-token manager

   5.7:上线某个节点

         docker node update --availability active node1

   5.8:active 和drain状态的区别

         swarm集群中node的availability状态可以为 active或者drain,其中:
active状态下,node可以接受来自manager节点的任务分派;
drain状态下,node节点会结束task,且不再接受来自manager节点的任务分派(也就是下线节点)

    6:部署服务(部署nginx)

          6.1:创建网络服务命令

docker network create -d overlay nginx_net

                   注 :在docker-swarm的模式下是基于overlay的网络模式组成的节点互通

                            如果不创建网络,则docker-swarm会使用自己默认的overlay网络模式

          6.2:查看网络命令:          

  1. # 查看网络
  2. docker network ls
  3. # 查看某个网络信息
  4. docker network ls | grep nginx_net

          6.3:部署服务命令:

  1. # 部署服务 --replicas 1 表示部署一个nginx实例
  2. docker service create --replicas 1 --network nginx_net --name my_nginx -p 80:80 nginx
  3. # 查看正在运行服务的列表
  4. docker service ls
  5. # 查询Swarm中服务的信息
  6. docker service inspect --pretty my_nginx
  7. # 查询到哪个节点正在运行该服务。如下该容器被调度到manager-node节点上启动了
  8. docker service ps my_nginx
  9. # 修改服务运行参数命令
  10. docker service update --replicas 3 my_nginx
  11. # 升级镜像
  12. docker service update --image nginx:new my_nginx
  13. # 删除镜像
  14. docker service rm my_nginx
  15. # 目录挂载 创建挂载目录
  16. docker volume create --name testvolume
  17. # 查看创建挂在卷
  18. docker volume ls
  19. # 查看volume详情
  20. docker volume inspect testvolume

7:docker-swarm 多服务

     3个服务(tomcat服务,nginx服务,web应用)三个服务

     1)创建工作目录

           mkdir /home/docker

      2)进入到docker目录下创建docker-compose.yml

           vi  docker-compose.yml

      内容如下:

  1. version: "3.8"
  2. services:
  3. nginx:
  4. image: nginx
  5. ports:
  6. - 8888:80
  7. deploy:
  8. mode: replicated
  9. replocas: 3
  10. tomcat:
  11. image: tomcat:8
  12. ports:
  13. 8080:8080
  14. deploy:
  15. mode: replicated
  16. replocas: 2

通过这个yml文件部署服务

docker stack deploy -c docker-compose.yml deploy_deamon

执行完上面结果如下所示:

Creating network deploy_deamon_default

Creating service deploy_deamon_nginx

Creating service deploy_deamon_tomcat

    
                  

                  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/809197
推荐阅读
相关标签
  

闽ICP备14008679号