当前位置: 首页 > 后端技术 > Java

没玩过DockerStack管理服务的你已经out了,(送Portainer集群管理教程)

时间:2023-04-01 19:47:53 Java

我们上面用swarm部署服务,单个服务还好,如果服务很多怎么解决,这里我们使用到DockerStack管理服务。上面我们学习了如何配置swarm集群,知道了如何在swarm集群上部署应用。现在,我们开始了解Docker层次结构中的最高层——堆栈。堆栈是相关服务的组合,可以一起编排和管理。在单机模式下,我们可以使用Docker-Compose来编排多个服务,而DockerSwarm只能实现单个服务的简单部署。因此,引入本文的主角DockerStack。通过DockerStack,我们只需要修改已有的docker-compose.yml配置文件,即可完成Docker集群环境下的多服务编排。集群搭建案例应用部署数量服务名称mysql1nacos1learn-docker-gateway1learn-docker-web2learn-docker-storage2创建docker-compose.yml首先创建一个docker-compose.yml文件,使用DockerComposev3的语法我们把我们原来的单机版本docker-compose.yml转换以下版本:'3.9'services:mysql:image:mysql:5.7.33networks:-learn-docker-networkvolumes:-"/tmp/etc/mysql:/etc/mysql/mysql.conf.d/"-"/tmp/data/mysql:/var/lib/mysql"环境:MYSQL_ROOT_PASSWORD:'root'deploy:mode:replicatedreplicas:1placement:constraints:-'node.labels.role==data'restart_policy:condition:on-failuredelay:5snacos:image:nacos/nacos-serverports:-"8848:8848"networks:-learn-docker-network环境:MODE:'stand单独'JVM_XMS:'128m'JVM_XMX:'128m'deploy:mode:replicatedreplicas:1restart_policy:condition:on-failuredelay:5slearn-docker-web:image:manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-web:1.0-SNAPSHOTnetworks:-learn-docker-networkdepends_on:-nacos-mysqldeploy:mode:replicatedreplicas:2restart_policy:condition:on-failuredelay:5s学习-docker-storage:image:manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-storage:1.0-SNAPSHOTnetworks:-learn-docker-networkdepends_on:-nacos-mysqldeploy:mode:replicatedreplicas:2restart_policy:条件:失败延迟:5slearn-docker-gateway:image:manager-hongbaoyu-java.itheima.net:8443/library/learn-docker-gateway:1.0-SNAPSHOT端口:-“8888:8888”网络:-learn-docker-networkdepends_on:-nacos-mysqldeploy:mode:replicatedreplicas:1restart_policy:condition:on-failuredelay:5svisualizer:image:dockersamples/visualizerports:-"8080:8080"volumes:-"/var/run/docker.sock:/var/run/docker.sock"deploy:mode:replicatedreplicas:1restart_policy:condition:on-failuredelay:5snetworks:learn-docker-network:driver:overlay配置介绍Stack文件就是Docker组合文件唯一的要求是版本:一个项目需要是3.0或更高版本。Docker基于Stack文件部署应用时,首先检查并创建networks:关键字对应network。如果网络不存在,Docker将创建它。让我们仔细看看这些模块。overlaynetwork这里定义了一个网络。默认情况下,网络使用覆盖驱动程序,并创建相应覆盖类型的新网络。networks:learn-docker-network:driver:overlay部署节点replicas数量接下来我们详细了解一下deploy关键字的新内容deploy:mode:replicatedreplicas:2restart_policy:condition:on-failuredelay:5sreplicas:2设置期望服务的副本数为2,默认为1,如果服务正在运行,需要调整副本数。您可以在堆栈文件中调整副本的值,然后重新部署堆栈。重新部署堆栈不会影响未更改的服务。restart_policy:定义Swarm对容器异常退出的重启策略。当前服务的重启策略是:如果一个副本以非零返回值退出,则立即重启当前副本。最多尝试重启3次,每次最多等待120s检查是否成功。每次重启间隔5s。节点约束因为我们的数据库节点只能部署在数据节点上,因为需要挂载本地数据文件和数据库文件,所以都需要使用标签进行节点约束mysql:image:mysql:5.7.33networks:-learn-docker-网络卷:-“/tmp/etc/mysql:/etc/mysql/mysql.conf.d/”-“/tmp/data/mysql:/var/lib/mysql”环境:MYSQL_ROOT_PASSWORD:'root'deploy:mode:Replicatedreplicas:1placement:constraints:-'node.labels.role==data'restart_policy:condition:on-failuredelay:5s'node.labels.role==data这里的意思是约束当前mysql节点以标签名称为角色,值为数据的数据节点。更多操作请参考下方部署服务部署应用。使用dockerstackdeploy命令部署dockerstackdeploy-cdocker-compose.ymllearn-docker-test这里我们指定docker-compose文件,并将stack命名为learn-docker-test。查看部署状态,可以通过dockerstackls命令查看集群部署状态,该命令会列出Swarm集群中所有的Stack,包括每个Stack有多少服务。查看nacos节点信息访问nacos服务,发现我们的服务已经注册测试Access服务访问服务接口测试curlhttp://192.168.64.153:8888/employeapi/find/10001|python-mjson.tool集群管理更新服务dockerserviceupadte可升级swarm服务参数详解--forceforceupdaterestart服务,无论配置或镜像改变都更新--image\创建更新镜像--with-registry-auth向Swarm代理发送Registry认证详情,私有仓库更新镜像需要携带该参数#查看服务详情dockerservicels#updateservicedockerserviceupdate--imagemanager-hongbaoyu-java.iheima。net:8443/library/learn-docker-storage:1.0-SNAPSHOTlearn-docker-test_learn-docker-storagedeleteapplicationviewdeployment集群dockerstackls可以查看已部署服务列表,执行deletedockerstackrmstackname命令删除整个堆栈集群。请注意,在执行移除操作之前不会进行二次确认。dockerstackrmlearn-docker-test相关命令(手册)dockerstack常用命令命令说明dockerstackdeploy部署新堆栈或更新现有堆栈dockerstackls列出现有堆栈dockerstackps列出堆栈中的任务dockerstackrm删除stackdockerstackservices列出栈中的服务dockerstackdown移除一个栈(不删除数据)dockerservice常用命令命令描述dockerservicecreatedeployservicedockerserviceinspect查看服务详情dockerservicelogs查看一个服务logdockerservicels查看allservicedetailsdockerservicerm删除一个服务(-f强制删除)dockerservicescale设置一个服务的个数dockerserviceupdate更新一个服务dockernode常用命令命令描述dockernodels查看所有集群节点dockernoderm删除一个节点(-f强制删除)dockernodeinspect查看节点详情dockernodedemote节点降级,从管理节点降级到工作节点dockernodepromote节点升级,从工作节点升级到管理节点dockernodeupdateupdatenodedockernodeps查看节点中的Task任务dockerswarm常用命令命令描述dockerswarminit初始化集群dockerswarmjoin-tokenworker查看工作节点的tokendockerswarmjoin-tokenmanager查看管理节点的tokendockerswarmjoinjoin集群portainer集群管理(扩展)Portainer简介Portainer是一款可视化的容器镜像图形化管理工具。Portainer可用于轻松构建、管理和维护Docker环境。并且完全免费,基于容器安装,部署方便高效。Portainer被设计为易于部署和使用。它由一个可以在任何Docker引擎上运行的容器组成(可以部署为Linux容器或Windows原生容器,也支持其他平台)。Portainer允许您管理所有Docker资源(容器、图像、卷、网络等)。它与独立的Docker引擎和DockerSwarm模式兼容。在swarm集群中安装Portainer使用swarm集群安装Portainer,使用Portainer管理一个swarm集群#下载部署配置文件curl-Lhttps://downloads.portainer.io/portainer-agent-stack.yml-oportainer-agent-stack.yml#部署节点dockerstackdeploy-cportainer-agent-stack.ymlportainer注意:该方法会自动部署Portainer服务器的单个实例,并将Portainer代理作为全局服务部署在每个节点上簇。Portainer使用注册用户默认访问接口为9000端口,可以通过浏览器访问。首次登录需要注册用户,admin用户设置密码查看管理服务。单击主节点。当前节点是我们的swarm集群,点击可以看到。我们可以操作的菜单查看swarm节点点击swarm菜单可以看到swarm节点管理微服务的部署我们需要把我们的服务交给portainer来管理服务名的个数mysql1nacos1learn-docker-gateway1learn-docker-web2learn-docker-Storage2准备管理节点标签我们MySQL需要部署在数据节点上,我们在swarm管理节点上添加节点标签,点击节点信息进入下面的详情页面配置标签添加网络信息,因为我们的节点需要一个普通的overlay网络,我们需要配置Next,在network节点上点击Add,在Add页面选择overlay网络类型,名称为learn-docker-network,然后点击Create创建仓库配置。因为我们的微服务需要从自己的harbor镜像仓库中拉取,所以需要在我们的Warehouse配置中填写我们在仓库节点的镜像地址为https://manager-hongbaoyu-java.iheima.net:8443创建一个stack任务在stack界面点击stack菜单,添加stck任务在stack管理界面,添加我们的docker-composeCopy.yml到我们的stack界面,点击创建节点信息。等待部署,等待下一个节点部署。点进去后可以点击节点详情查看节点部署状态。进入swarm管理界面,点击Gotoclustervisualizer查看。服务部署本文由传智教育博学谷教研组发布。如果本文对您有帮助,请关注并点赞;有什么建议也可以留言或私信。您的支持是我坚持创作的动力。转载请注明出处!