swarm是什么
swarm是一组运行docker服务的集群,之后,还是使用那些命令去操作docker,但是是通过swarm manager来执行的。
swarm中的机器可以是实体的也可以是虚拟的,加入swarm后,他们被当作节点
swarm manager能够使用多个策略去运行容器
emptiest node 最少使用的节点去运行
global 每个机器精确的分配一个指定的容器
我们通过swarm manager中的配置文件来制定对应的策略
swarm manager 是在swarm集群中唯一能够执行命令,确定其他机器能够作为worker加入swarm集群,work仅仅能够提供计算的能力,不能够授权哪台可以做,哪台不可以
现在,可以在本地机器使用单机模式,但是也能切换到swarm模式,这使得我们能够使用swarms,swarm模式使得当前的机器成为swarm manager。从现在开始,docker运行在swarm上的命令,而不仅仅是在当前机器上。
设置你的swarm
swarm由多个节点组成,可以是虚拟的也可以是实体的,基本的是通过运行docker swarm init 去开启swarm模式,使得当前机器成为swarm manager,然后运行docker swarm join 在其他机器上,使得他们成为worker加入swarm.
使用虚拟机之前需要先下载orcale的虚拟机环境
1.配置两个虚拟机器VMS使用docker-machine命令
docker-machine create --driver virtualbox myvm1
docker-machine create --driver virtualbox myvm2
2.查看创建的虚拟机 ip和相关信息
docker-machine ls
初始化swarm和增加节点
第一个机器是manager,执行命令,管理其他workers,另一个机器是worker
$ docker-machine ssh myvm1 "docker swarm init --advertise-addr <myvm1 ip>"
Swarm initialized: current node <node ID> is now a manager. To add a worker to this swarm, run the following command: docker swarm join \ --token <token> \ <myvm ip>:<port> To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
将另一台机器添加为worker
$ docker-machine ssh myvm2 "docker swarm join \ --token <token> \ <ip>:2377" This node joined a swarm as a worker.
运行命令查看swarm 信息
$ docker-machine ssh myvm1 "docker node ls" ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS brtu9urxwfd5j0zrmkubhpkbd myvm2 Ready Active rihwohkh3ph38fhillhhb84sk * myvm1 Ready Active Leader
在swarm manager上发布应用
docker stack deploy -c docker-compose.yml getstartedlab