天天看点

Docker三剑客之Docer Swarm

一、Docker Swarm简介

(1) Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker中,成为 Docker 的一个子命令。

(2) Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。

(3) Swarm可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络。

(4) Docker Swarm 是一个为 IT 运维团队提供集群和调度能力的编排工具。

Docker三剑客之Docer Swarm

(1) Docker Swarm 优点

a. 任何规模都有高性能表现

b. 灵活的容器调度

c. 服务的持续可用性

d. 和 Docker API 及整合支持的兼容性

e. Docker Swarm 为 Docker 化应用的核心功能(诸如多主机网络和存储卷管理)提供原生支持。

(2) docker swarm 相关概念

a. 节点分为管理 (manager) 节点和工作 (worker) 节点

b. 任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

c. 服务 (Services) 是指一组任务的集合,服务定义了任务的属性。

Docker三剑客之Docer Swarm

二、Docker Swarm实践

环境:

server5 (172.25.60.5) manager
server4 (172.25.60.4) worker
server6 (172.25.60.6) worker

注: server4/5/6都安装docker,并打开。如果前面做过其他实验,要清缓存,保证干净的环境

1.创建 Swarm 集群

(1)初始化集群:

docker swarm init --advertise-addr 172.25.60.5
           
Docker三剑客之Docer Swarm

(2)根据提示在其他docker节点上执行命令:

Docker三剑客之Docer Swarm

(3)查看swarm集群节

docker node ls
           
Docker三剑客之Docer Swarm

(4) 部署swarm监控:(各节点提前导入dockersamples/visualizer镜像)

docker service create --name=viz --publish=8080:8080/tcp \
--constraint=node.role==manager  \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock   \
dockersamples/visualizer
           
Docker三剑客之Docer Swarm

查看服务是否运行

docker service ls
docker service ps viz 
           
Docker三剑客之Docer Swarm

2.创建集群服务

(1)docker service create (server4/5/6都有nginx镜像)

docker service create --replicas 3 --name web--publish 80:80 nginx:1.16

           

docker service create 命令创建一个服务

–name 服务名称命名为 my_cluster

–network 指定服务使用的网络模型(此处未用)

–replicas 设置启动的示例数为3

注:如果出现以下报错

Docker三剑客之Docer Swarm

查看镜像时:

Docker三剑客之Docer Swarm

解决办法:

清空刚才创建的缓存,关闭网络(刚才的问题是因为连网,创建时直接从网络上下载了镜像)

(2)弹性伸缩

docker service scale web=60	//拉神
docker service scale web=3	//压缩
           

(3)滚动更新

docker service update --image game2048 --update-delay 5s --update-parallelism 2 web
           

–image 指定要更新的镜像

–update-parallelism 指定最大同步更新的任务数

–update-delay 指定更新间隔

3.再介绍一种创建集群服务的方法

docker service create --name web --publish 80:80 --mode global game2048
           

–mode global:每个上面只能运行一个服务

优点: 新添加进去的worker会自动,只要有镜像会自动拉起服务,并加入监控

注:删除swarm集群

worker:

docker swarm leave
           

manager:

docker node rm server4
docker swarm leave -f
docker volume prune
docker network prune
dockerr container prune
           

继续阅读