docker swarm

 

  Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口做为其前端访问入口,换言之,各类形式的Docker Client(docker client in Go, docker_py, docker等)都可以直接与Swarm通讯。Swarm几乎所有用go语言来完成开发,Swarm0.2发布,相比0.1版本,0.2版本增长了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。前端

  Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm本身不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即便Swarm因为某些缘由挂掉了,集群中的节点也会照常运行,当Swarm从新恢复运行以后,它会收集重建集群信息.node

1.swarm 初始化(建立集群)nginx

docker swarm init --advertise-addr x.x.x.x(ip地址)

之前作过的话可能会报须要先离开集群redis

执行docker swarm leave 最好是加上--force 参数docker

执行成功后再次初始化集群bash

  

如图所示,就是初始化集群成功,在其余机器上执行图中画红线的就能够加入集群服务器

注意:docker集群用到 2377端口(集群管理端口),7946(这两个是须要开启tcp和udp) ,4789网络

建立成功后每一个节点都会有个overlay 的网络配置,该配置是用来节点之间的通信的,如图所示tcp

 在每一个机器上查看网络 docker network  inspect ingress 能够看到集群内部通信地址,可是ping不通, 建议仍是用服务器ip来做为其余服务(如redis集群)的通信地址,spa

 

将节点升级为manager:  docker node  promote 结点名 
将节点降级为worker:  docker node  demote 结点名

 

2.建立服务(如nginx)

  

docker service create --replicas 5  -p 8080:80 --name nginx  nginx

  --replicas建立几个服务   最后一个nginx为镜像名若是有本地的使用本地的,没有可使用公共的镜像

  执行成功后会均匀的分配到集群中(有先分配到工做节点上,最后才会分配到leader节点上)

docker service scale nginx=0

  其中的0若是大于如今配置的服务数就是至关于扩容到几台服务,若是小于如今的服务数就至关于减少到对应的服务数,(当手动减少后,只会移除掉管理权限,再次扩容的时候对原先减掉的服务没有影响,经过此命令减小的,会将次服务删除)

注意全部的存储数据或须要持久化的数据不能放到服务内部(也就是容器内部),不然当容器删除(或者服务减小的时候该容器上的数据也会一并消失)

  删除服务  

docker service rm nginx

 

  查看全部服务

docker service ls

  查看服务的容器状态

 

docker service ps nginx 

 

  查看服务的详细信息

 

docker service inspect nginx
相关文章
相关标签/搜索