前面几节课基本上讲解了Service的创建,维护和删除,以及service的互相访问,对外提供访问的方式。
之前使用DockerCompose是可以进行service管理的,本身也是很方便的工具,可以很方便的再本地部署应用,但是针对swarm这种并非单节点的编排工具来说,稍微有一点不方便。
这节课主要用比起compose更方便的方式来对service进行管理,虽然要用到compose的配置文件,但是部署时候使用的是docker自身的命令行工具
1. compose文件和相关命令解读
1.1 deploy命令和具体配置项
这里deploy命令还有很多子命令,例如设置endpoint_mode,可以设置为vip,虚拟IP方式,还有一种是通过robin来做负载均衡(循环使用dns访问服务),默认是vip,一般不需要使用:
接着是labels,主要是描述信息:
然后是mode:
global:service全局只能有一个,不能做横向扩展
replicated:默认值,service可以扩展,也是前面课程部署的那种服务
然后是placement:
constraints:限制,一般指定一些部署节点类型,或者一些label
然后是replicas,如果mode是replicated,初始化时候就可以指定需要几个副本:
然后是Resources:
进行资源限制
然后是重启策略:
2. 实例解读
2.1 修改yml文件
这里我们先从之前的docker-compose实验用的yml文件拷贝一个过来:
这里主要是针对compose命令来用的配置项,直接用肯定不合适,需要修改:
-
networks在swarm里面是一个overlay,而不是一个bridge,名称也改成my-network
-
第二点是需要修改service,我们先从mysql入手,需要加一个deploy部分声明部署要求,首先不希望做replicas,只能部署到manager节点:
其他参数不需要更改。
然后针对wordpress进行修改,支持副本,同时配置重启策略和更新策略:
2.2 使用compose文件来部署到cluster
这里我们使用docker stack命令来部署:
然后我们通过docker stack deploy命令来部署,这里我们把yml里面wordpress改革名字为web,然后deploy一个wordpress的stack,然后可以看到通过配置yml文件来进行
然后重新deploy
然后会帮我们创建一个network,两个service,同时都会加上wordpress前缀,我们通过一些命令来看一下细节
我们可以看到有1个mysql在running,有一个shutdown了,另外web有3个,总的来说没有问题,有几个reject可以是因为vpn,导致部分网络有问题。
接着我们打开浏览器,随意输入cluster里面节点的8080端口:
安装之后发现mysql也是可以使用的。
最后我们可以通过rm命令来停掉stack,删除servcie和网络: