Docker容器技术:DockerStack部署wordpress

1,065 阅读2分钟

前面几节课基本上讲解了Service的创建,维护和删除,以及service的互相访问,对外提供访问的方式。

之前使用DockerCompose是可以进行service管理的,本身也是很方便的工具,可以很方便的再本地部署应用,但是针对swarm这种并非单节点的编排工具来说,稍微有一点不方便。

这节课主要用比起compose更方便的方式来对service进行管理,虽然要用到compose的配置文件,但是部署时候使用的是docker自身的命令行工具

1. compose文件和相关命令解读

image.png

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命令来用的配置项,直接用肯定不合适,需要修改:

  1. networks在swarm里面是一个overlay,而不是一个bridge,名称也改成my-network

  2. 第二点是需要修改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和网络: