我们上面使用swarm部署服务,单个服务还好,如果很多个服务怎么来解决呢,这里就用到了Docker Stack管理服务。 在上面我们学会了如何配置一个swarm集群,并且知道如何在swarm集群上部署应用,现在,我们开始了解Docker层级关系中的最高一个层级——stack。一个stack就是一组有关联的服务的组合,可以编排在一起,一起管理。
首先创建一个 docker-compose.yml 文件,使用 Docker Compose v3 语法
我们把我们原来单机版的docker-compose.yml改造以下
接下来我们进一步了解deploy关键字新增的内容
因为我们的数据库节点只能部署在数据节点,因为需要挂载本地的数据文件以及数据库文件,所有需要使用标签进行节点约束
这里的 'node.labels.role == data含义就是将当前mysql节点约束在标签名字是role,并且值是data的数据节点,更多操作请参考下文部署服务
使用docker stack deploy 命令部署
这里我们指定了docker-compose文件,并把stack命名为 learn-docker-test。
可以通过docker stack ls命令查看集群部署情况,会列出 Swarm 集群中的全部 Stack,包括每个 Stack 拥有多少服务
访问nacos服务,发现我们的服务都已经注册
访问服务接口测试
docker service upadte 可以对swarm服务进行升级参数详解
docker stack ls可以查看部署的服务列表
docker stack rm stack名称命令会删除整个stack集群,注意移除操作执行前并不会进行二次确认。
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。 Portainer 的目的是部署和使用一样简单。它由一个可以在任何 Docker 引擎上运行的单一容器组成(可以部署为Linux容器或Windows本地容器,也支持其他平台)。Portainer允许你管理所有的Docker资源(容器、镜像、卷、网络等等)。它与独立的Docker引擎和Docker Swarm模式兼容。
使用swarm集群安装Portainer,用Portainer来管理swarm集群
默认访问接口是9000端口,可以通过浏览器进行访问,首次登陆需要注册用户,给admin用户设置密码
点击home节点,当前这个节点就是我们的swarm集群
点进去就可以看到我们能操作的菜单了
点击swarm菜单就可以看到swarm节点了
我们要将我们的服务交给portainer管理服务名称数量mysql1nacos1learn-docker-gateway1learn-docker-web2learn-docker-storage2准备工作
我们MySQL需要部署在数据节点,我们添加节点标签
在swarm管理节点,点击节点信息进入下面详情页面进行配置标签
因为我们的节点需要一个共有的overlay网络,我们需要配置下,在network节点点击添加
在添加页面选择overlay网络类型,名字叫做learn-docker-network
然后点击创建就可以创建仓库配置
因为我们的微服务需要从我们自己的harbor镜像仓库拉取,需要将我们的仓库配置
在仓库节点填写我们的镜像地址就可以https://manager-hongbaoyu-java.itheima.net:8443
在stack界面点击stack菜单进行添加stck任务
在stack管理界面将我们的docker-compose.yml复制进我们的stack界面
点击创建节点信息就可以,等待部署就可以
稍等下节点就部署完成了
点击进去就可以单到节点详情了
进入swarm管理界面
点击Go to cluster visualizer查看服务部署情况
本文由传智教育博学谷教研团队发布。
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。
转载请注明出处!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |