Docker:Swarm + Stack 一站式部署容器集群
概述
Docker将应用沙盒化,将程序的运行与主机的环境隔离开,本身是十分适合进行应用程序的堆砌、组合、互动的。
新推出的(还算新吧)swarm功能将不同的docker容器集成为管理节点-工作节点的集群模式,建立联系的同时也可以分配计算资源,实现以docker容器为单元的并行任务。
既然是集群式的协作,那一个个部署节点就显得太过笨拙了。
所幸,docker的stack功能能够以swarm网络为基础,将不同主机的docker容器以service的形式一步到位。
结合先前做过的fiware组件的docker部署,本文将说明如何跨主机搭建swarm集群,利用搭建的swarm集群创建stack服务,实现fiware组件的跨主机一站式部署。
fiware只是作为一个测试的对象,并不是本文的重点。本文的重点在于如何将一般的docker命令行式的部署转化为yml文件形式的部署,以及一些命令行中的参数如何在yml文件中进行配置。(看不出踩了坑的踩坑记录)
要求
- 2台linux系统的主机,均已安装Docker engine
- 了解基本的docker操作。
Docker的中文资料可以看这篇但是强烈推荐去docker
官网看英文版的教程,因为以我看过来的情况,中文教程普遍是官方文档的翻译,而且常有翻译不当,内容缺失,更新不及时等问题。(不是在黑上面贴的那个中文教程,那个还是可以的)
Docker Swarm集群
集群搭建
已经准备的两台主机ip分别为192.168.12.205 : IoTBroker以及192.168.12.206 : iotdiscovery
创建docker swarm集群:
sudo docker swarm init --advertise-addr 192.168.12.206
Swarm initialized: current node (8pg89ccu91qon6j1pf0mjq6jr) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join –token [token:保护集群,此处人工马赛克] 192.168.12.206:2377
To add a manager to this swarm, run ‘docker swarm join-token manager’ and follow the instructions.
查看一下swarm状态:
sudo docker info
可以找到
swarm:active
说明swarm已被激活
查看节点情况:
sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
8pg89ccu91qon6j1pf0mjq6jr * iotdiscovery Ready Active Leader
可以看到swarm集群的节点情况,这个集群现在只有一个节点,即206本机,角色为leaderÿ