Docker Swarm 资源管理

Docker Swarm

Docker Swarm是Docker官方项目之一,是使用SwarmKit构建的Docker引擎内置的集群管理和编排工具,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型虚拟Docker主机,快速打造一套容器云平台。

节点

运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已经存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点 node。

节点分为管理节点 manager 和工作节点 worker
管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行
工作节点是任务执行节点,管理节点将服务 service 下发到工作节点执行

img

服务与任务

任务 task 是Swarm中最小的调度单位,目前来说就是一个单一的容器
服务 service 是指一组任务的集合,服务定义了任务的属性

服务有两种模式:

  • replicated services 按照一定规则在各个节点上运行指定个数的任务
  • global services 每个工作节点上运行一个任务

这两种模式可以通过docker service create 的 —mode参数指定

img

Docker Swarm集群搭建

在Docker服务器上使用 docker swarm init 在初始化一个Swarm集群:

docker swarm init --advertise-addr 192.168.xx.xxx

img

执行docker swarm init命令的节点自东成为管理节点,同时该命令执行后会打印添加工作节点的命令,将该命令拷贝到工作节点执行后就可以将工作节点添加到Swarm集群中。如果忘记了添加工作节点的命令可以通过 “docker swarm join-token worker” 进行查看。在添加工作节点时可能会添加失败,可以先查看下防火墙,Swarm节点之间通过TCP/UDP进行通信,要确保端口2377,7946,4789是可以通信的,测试环境可以关闭防火墙,重启Docker服务。

这样一个管理节点,两个工作节点的Swarm最小集群就搭建完毕

img

Swarm集群部署服务

使用docker service命令可以管理Swarm集群中的服务,该命令只能在管理节点运行。
在Swarm集群中创建一个nginx服务,服务创建前确保每个节点:

docker service create --replicas 3 -p 80:80 --name nginx nginx:latest

使用 “docker service ls ” 和 “docker service ps ”命令可以查看运行的服务
服务正常启动后输入任意节点的IP都可以访问nginx服务

img

Swarm图形化资源管理工具

portainer是Docker图形化管理工具,提供了详细的状态显示面板,应用模板快速部署,容器/镜像/数据卷等的基本操作,事件日志的查看显示,Swarm集群和服务的集中管理,以及用户管理等功能

运行portainer:

# 拉取镜像
docker pull portainer/portainer

# 运行
docker run -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer

portainer容器启动后就可以在浏览访问,首次登录需要设置admin用户密码

img

portainer容器运行在Swarm管理节点上,选择local连接后就进入以下页面

img

点击local后进入详细页面,包含了主机上Docker的镜像,容器,数据卷,Swarm集群信息等

img

Swarm集群信息 

img

服务信息,在这里可以进行服务的创建,扩容,删除等操作

img

posted @ 2020-04-09 20:27  CodingDiary  阅读(422)  评论(0编辑  收藏  举报