在介绍Swarm以前咱们要说一下什么Docker三剑客?node
Swarm翻译中文的意思是蜂群的意思。你们都知道蜂群是很不少多蜜蜂在一块儿。里面有蜂王和工蜂,各司其职。那么在咱们技术界把许许多多的Docker组织在一块儿,这样就是Docker集群。Swarm就是管理这些Docker的工具。同蜂群同样。也有蜂王(Master节点)工蜂(Node节点)各司其职。蜂王能调度和指挥全部的工蜂来完成各类任务。实现整个蜂群的正常运转。nginx
由于在生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行。 这样能保证咱们的服务能够作到不怠机。长时间稳定的运转下去。虽然Docker集群管理工具不少,有比较有名的Kubernetes和Mesos。可是咱们为何要选择Swarm呢?。首先对于一个刚刚入门和接触Docker的人来讲。最好的学习资料是官方文档。Swarm是原生的,同时也是最简单,最易学,最节省资源的Docker集群管理工具。因此我相信Swarm不会让我失望的。git
因为咱们等会要使用Machine来建立节点。因此介绍Machine的基本使用。github
#因为MacOs在安装docker的时候。已经默认安装Machine.这里根据官网给出的Linux安装命令 sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine #添加权限 sudo chmod +x /usr/local/bin/docker-machine #查看当前Machine版本 docker-machine -v #安装MacOs虚拟机xhyve驱动。也能够跳过 brew install docker-machine-driver-xhyve
使用Machine建立4个虚拟机docker
#create命令后面能够添加自定义参数.能够经过docker-machine create --driver virtualbox --help查看 #建立Master节点.这里dm由于我使用自定义命令。等同于docker-machine dm create Master #能够经过ls命令查看当前虚拟机.而后咱们分别创建3个node节点,node1,node2,node3 dm create Node1 dm create Node2 dm create Node3 #建立而后经过ls查看 dm ls ###################### NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS Master - virtualbox Running tcp://192.168.99.100:2376 v18.03.0-ce Node1 - virtualbox Running tcp://192.168.99.102:2376 v18.03.0-ce Node2 - virtualbox Running tcp://192.168.99.103:2376 v18.03.0-ce Node3 - virtualbox Running tcp://192.168.99.103:2376 v18.03.0-ce
到此4台虚拟机已经建立完毕。下面开始使用Swarm搭建一个集群。ssh
首先咱们须要登陆到Master这台虚拟机。建立初始化一个集群。curl
#登陆到Master dm ssh Master #初始化集群。注意这里因为是虚拟机。有多个ip。全部必须制定ip.不然会报错. docker swarm init --advertise-addr 192.168.99.100 #这里会提示建立manager成功。若是要加入worker。只须要在别的主机里面输入它已经生成的号的命令输入就能够了。 docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377 #登入Node1 dm ssh Node1 #输入上面命令。Node2和Node3操做同样 docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377 #登陆Master,查看状态 dm ssh Master #查看集群 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 0vol8fdjksmabvmgx0x60ncyd * Master Ready Active Leader 18.03.0-ce jnuun47ezvi0bl1iz1ccxmgto Node1 Ready Active 18.03.0-ce ye6ghynu19tvdkf51kof13w6y Node2 Ready Active 18.03.0-ce x84fqdefi4461gf087qcb9nmt Node3 Ready Active 18.03.0-ce
这里会看到4台虚拟机。其中Master台是Leader (就是咱们的蜂王),剩下的3台就是咱们的worker(工蜂)到这里咱们一个简单的小集群就搭建完毕了。tcp
咱们已经搭建好了集群。可是要怎么样经过Master管理咱们的worker节点呢?
首先咱们须要登陆到Master这台虚拟机。而后经过这个台虚拟机来控制3个worker节点分布式
#登陆Master dm ssh Master #运行服务。 docker service create --replicas 4 -p 80:80 --name nginx nginx #查看集群运行的服务 service ps nginx
这个时候4个虚拟机已经所有安装了nginx这个服务。咱们打开任意一个节点的ip打开就能够看到熟悉的"Welcome to nginx!"的页面了。到此整个教程结束。工具