如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)()

  本篇文章为你整理了如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)()的详细内容,包含有 如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程),希望能帮助你了解 如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)。

  我们上面使用swarm部署服务,单个服务还好,如果很多个服务怎么来解决呢,这里就用到了Docker Stack管理服务。

  ​ 在上面我们学会了如何配置一个swarm集群,并且知道如何在swarm集群上部署应用,现在,我们开始了解Docker层级关系中的最高一个层级——stack。一个stack就是一组有关联的服务的组合,可以编排在一起,一起管理。

  ​ 单机模式下,我们可以使用 Docker-Compose来编排多个服务,而 Docker Swarm 只能实现对单个服务的简单部署。于是就引出了本文的主角 Docker Stack ,通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。

  集群搭建案例

  应用部署情况

  
首先创建一个 docker-compose.yml 文件,使用 Docker Compose v3 语法

  我们把我们原来单机版的docker-compose.yml改造以下

  

version: 3.9 

 

  services:

   mysql:

   image: mysql:5.7.33

   networks:

   - learn-docker-network

   volumes:

   - "/tmp/etc/mysql:/etc/mysql/mysql.conf.d/"

   - "/tmp/data/mysql:/var/lib/mysql"

   environment:

   MYSQL_ROOT_PASSWORD: root

   deploy:

   mode: replicated

   replicas: 1

   placement:

   constraints:

   - node.labels.role == data

   restart_policy:

   condition: on-failure

   delay: 5s

   nacos:

   image: nacos/nacos-server

   ports:

   - "8848:8848"

   networks:

   - learn-docker-network

   environment:

   MODE: standalone

   JVM_XMS: 128m

   JVM_XMX: 128m

   deploy:

   mode: replicated

   replicas: 1

   restart_policy:

   condition: on-failure

   delay: 5s

   learn-docker-web:

   image: manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-web:1.0-SNAPSHOT

   networks:

   - learn-docker-network

   depends_on:

   - nacos

   - mysql

   deploy:

   mode: replicated

   replicas: 2

   restart_policy:

   condition: on-failure

   delay: 5s

  
learn-docker-storage:

   image: manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-storage:1.0-SNAPSHOT

   networks:

   - learn-docker-network

   depends_on:

   - nacos

   - mysql

   deploy:

   mode: replicated

   replicas: 2

   restart_policy:

   condition: on-failure

   delay: 5s

   learn-docker-gateway:

   image: manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-gateway:1.0-SNAPSHOT

   ports:

   - "8888:8888"

   networks:

   - learn-docker-network

   depends_on:

   - nacos

   - mysql

   deploy:

   mode: replicated

   replicas: 1

   restart_policy:

   condition: on-failure

   delay: 5s

   visualizer:

   image: dockersamples/visualizer

   ports:

   - "8080:8080"

   volumes:

   - "/var/run/docker.sock:/var/run/docker.sock"

   deploy:

   mode: replicated

   replicas: 1

   restart_policy:

   condition: on-failure

   delay: 5s

  networks:

   learn-docker-network:

   driver: overlay

  

 

  配置介绍

  ​ Stack文件就是Docker Compose文件。唯一的要求就是version:一项需要是3.0或者更高的值。在Docker根据某个Stack文件部署应用的时候,首先会检查并创建networks:关键字对应网络。如果网络不存在,Docker会进行创建。下面我们详细看下这几个模块。

  overlay网络

  ​ 这里定义了1个网络,默认情况下网络都是使用overlay驱动,新建对应的覆盖类型的网络。

  

networks:

 

   learn-docker-network:

   driver: overlay

  

 

  部署节点副本数

  接下来我们进一步了解deploy关键字新增的内容

  

 deploy:

 

   mode: replicated

   replicas: 2

   restart_policy:

   condition: on-failure

   delay: 5s

  

 

  replicas: 2 设置了期望服务的副本数量为2,默认为1.如果服务正在运行,需要调整副本数。可以调整stack文件中的 replicas 的数值,然后重新部署stack。重新部署stack并不会影响那些没有改动的服务。

  restart_policy: 定义了Swarm针对容器异常退出的重启策略。当前服务的重启策略是:如果某个副本以非0返回值退出,会立即重启当前副本。重启最多尝试3次,每次都是等待之多120s来检测是否成功。每次重启的间隔是5s。

  因为我们的数据库节点只能部署在数据节点,因为需要挂载本地的数据文件以及数据库文件,所有需要使用标签进行节点约束

  

 mysql:

 

   image: mysql:5.7.33

   networks:

   - learn-docker-network

   volumes:

   - "/tmp/etc/mysql:/etc/mysql/mysql.conf.d/"

   - "/tmp/data/mysql:/var/lib/mysql"

   environment:

   MYSQL_ROOT_PASSWORD: root

   deploy:

   mode: replicated

   replicas: 1

   placement:

   constraints:

   - node.labels.role == data

   restart_policy:

   condition: on-failure

   delay: 5s

  

 

  这里的 node.labels.role == data含义就是将当前mysql节点约束在标签名字是role,并且值是data的数据节点,更多操作请参考下文

  使用docker stack deploy 命令部署

  

docker stack deploy -c docker-compose.yml learn-docker-test

 

  

 

  这里我们指定了docker-compose文件,并把stack命名为 learn-docker-test。

  查看部署情况

  可以通过docker stack ls命令查看集群部署情况,会列出 Swarm 集群中的全部 Stack,包括每个 Stack 拥有多少服务

  服务部署情况

  查看nacos节点信息

  访问nacos服务,发现我们的服务都已经注册

  测试访问服务

  访问服务接口测试

  

curl http://192.168.64.153:8888/employeapi/find/10001 python -m json.tool

 

  

 

  docker service upadte 可以对swarm服务进行升级

  
--with-registry-auth 向 Swarm 代理发送 Registry 认证详细信息,私有仓库需要携带该参数

  
# 更新服务

  docker service update --image manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-storage:1.0-SNAPSHOT learn-docker-test_learn-docker-storage

  

 

 

  查看部署集群

  docker stack ls可以查看部署的服务列表

  docker stack rm stack名称命令会删除整个stack集群,注意移除操作执行前并不会进行二次确认。

  

docker stack rm learn-docker-test

 

  

 

  相关命令(手册)

  docker stack 常用命令

  
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。

  ​ Portainer 的目的是部署和使用一样简单。它由一个可以在任何 Docker 引擎上运行的单一容器组成(可以部署为Linux容器或Windows本地容器,也支持其他平台)。Portainer允许你管理所有的Docker资源(容器、镜像、卷、网络等等)。它与独立的Docker引擎和Docker Swarm模式兼容。

  swarm集群安装Portainer

  使用swarm集群安装Portainer,用Portainer来管理swarm集群

  

# 下载部署配置文件

 

  curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml

  # 部署节点

  docker stack deploy -c portainer-agent-stack.yml portainer

  

 

  注意:此方法将自动部署Portainer服务器的单个实例,并将Portainer代理作为全局服务部署到集群中的每个节点上。

  portainer使用

  默认访问接口是9000端口,可以通过浏览器进行访问,首次登陆需要注册用户,给admin用户设置密码

  查看管理服务

  点击home节点,当前这个节点就是我们的swarm集群

  点进去就可以看到我们能操作的菜单了

  查看swarm节点

  点击swarm菜单就可以看到swarm节点了

  管理微服务

  服务部署情况

  我们要将我们的服务交给portainer管理

  
 

  在swarm管理节点,点击节点信息进入下面详情页面进行配置标签

  添加网络信息

  因为我们的节点需要一个共有的overlay网络,我们需要配置下,在network节点点击添加

  在添加页面选择overlay网络类型,名字叫做learn-docker-network

  然后点击创建就可以

  创建仓库配置

  因为我们的微服务需要从我们自己的harbor镜像仓库拉取,需要将我们的仓库配置

  在仓库节点填写我们的镜像地址就可以https://manager-hongbaoyu-java.itheima.net:8443

  创建stack任务

  在stack界面点击stack菜单进行添加stck任务

  在stack管理界面将我们的docker-compose.yml复制进我们的stack界面

  点击创建节点信息就可以,等待部署就可以

  稍等下节点就部署完成了

  点击进去就可以单到节点详情了

  查看节点部署情况

  进入swarm管理界面

  点击Go to cluster visualizer查看服务部署情况

  本文由传智教育博学谷教研团队发布。

  如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。

  转载请注明出处!

  以上就是如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)()的详细内容,想要了解更多 如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: