Docker swarm是Docker官方实现的容器编排工具,它将多个Docker主机组成资源池当一台虚拟服务器来使用。
与Kubernetes、Mesos不同,Swarm暴露与Docker daemon相同的API,开发者使用单机版Docker后,可以无缝迁移到Swarm集群。
项目开源地址 https://github.com/docker/swarm
搭建Swarm的方法主要由两种,搭建多台Docker服务器手动部署,也可以通过docker-machine快速部署,这次我们将采取后一种方式。服务器使用Linux,提前安装了VirtualBox、docker-machine和docker-swarm。
第一步是向Docker hub获取uuid,如果需要高可用的Swarm master建议使用Consul、Etcd或ZooKeeper。
swarm create # f8b205ce0bcb2b70f6e3d969505a5708 |
通过这个集群id我们就可以创建master节点和agent节点了。
docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token: //f8b205ce0bcb2b70f6e3d969505a5708 swarm-master docker-machine create -d virtualbox --swarm --swarm-discovery token: //f8b205ce0bcb2b70f6e3d969505a5708 swarm-agent-00 docker-machine create -d virtualbox --swarm --swarm-discovery token: //f8b205ce0bcb2b70f6e3d969505a5708 swarm-agent-01 |
Swarm集群已经搭建成为,我们可以通过docker命令或swarm命令来调度容器,首先检测集群状态。
查看当前所有节点运行的Docker容器。
我们使用原生Docker API启动多个hello-world容器,发现已经由Swarm调度到多台Docker主机上,目前Swarm支持spread、binpack和random调度算法,默认的spread可以保证容器“平均”地运行在多台主机上。
注意,我们在启动容器同样可以限定内存和CPU,但如果超过了任意Docker主机的限制就会调度失败。
我们也可以通过docker-compose来调度一组容器,通过Docker强大的插件机制还可以组件适合生产环境使用的虚拟网络和分布式存储架构。
Docker作为2015年最火的项目之一,在2016年也将成为业界的焦点,随着Swarm、Kubernetes、Mesos等编排的工具的成熟将会有更多应用迁移到云端。
说到云端UnitedStack公有云为广大开发者提供便利的Docker运行环境,UnitedStack私有云能帮助传统企业无缝上云,更多容器服务也敬请关注。
陈迪豪,UnitedStack有云存储组PTL,目前专注于Docker、OpenStack社区。Docker监控管理工具Seagull项目作者,开源电子书《理解Linux进程》作者。