docker之swarm

docker swarm

介绍

  • 吧多个Docker Engine聚集在一起,然后对外提供容器的集群服务
  • 将一群Docker宿主机变成一个单一的蓄虚拟主机
  • Swarm deamon只是一个调度器加路由器,自己不运行容器,只接受docker客户端发送过来的请求,调度适合的节点来运行容器

特点

  • 对外以Docker api接口呈现,从单机到集群就比较方便,不需要改变现有系统
  • 插件化机制,各个模块都抽象出api,可以进行定制
  • Swarm对Docker命令参数支持的比较完善.

架构

在这里插入图片描述

使用

环境准备

  • 准备三台安装了docker engine的主机,版本在1.12以上
  • docker容器主机的ip固定,所有工作节点都能访问管理节点
  • 集群管理节点必须使用相应的协议并保证端口可用
    • 集群管理:TCP,端口2377
    • 节点通信:TCP和UDP,端口7946
    • 覆盖性网络:UDP,端口4789,overlay驱动
  • 说明
    • 192.168.200.162(管理节点):manager1
    • 192.168.200.163(工作节点):work1
    • 192.168.200.158(工作节点):work2

创建docker sware

  • 在manager1机器上创建docker swarm集群

docker swarm init --advertise - addr 192.168.200.138
–advertise - addr将该ip地址的及其设置为集群管理节点,单节点不用这个参数

  • 查看管理节点集群信息

docker node ls

添加工作节点

  • 在两个工作节点分别使用下面命令

docker swarm join --token xxx 192.168.200.138:2377
–token xxx想指定集群加入工作节点的认证信息,xxx是出那个创建docker swarm时产生的

  • 查看集群信息节点

docker node ls

在docker sware中部署服务

  • 部署服务

docker service create --replicas 1 --name helloworld alpine ping docker.com
docker service create:在swarm集群创建一个基于alpine镜像的服务
–replicas:指定该服务只有一个副本实例
–name:创建成功后服务名称
ping docker.com:表示服务启动后执行的命令

查案docker swarm集群的服务

  • 查看服务列表

docker service ls

  • 查看部署具体服务的详细信息

docker service inspect 服务名

  • 查看服务在集群节点上的分配和运行情况

docker service ps 服务名称

修改副本数量

  • 在manage1上,更改服务副本的数量

docker service scale helloworld=5

删除服务(在管理节点)

docker service rm 服务名称

访问服务

  • 查看集群环境下的网络列表

docker network ls

  • 在manager1上创建1overlay为驱动的网络

docker network create -的=overlay my-multi-host-network

  • 在集群管理节点部署一个nginx服务

docker service create --network my-multi-host-network --name my-web -p 8080:80 --replicas 2

  • 在管理节点查案服务的㛙情况

docker service ps my-web