官方文档

概述

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker
Compose 是一个在单个服务器或主机上创建多个容器的工具,可以将组成某个应该的多个docker容器编排在一起,同时管理。而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口(docker stack)统一管理这些Docker主机上的各种Docker资源。
stack 是构成特定环境中的 service 集合, 它是自动部署多个相互关联的服务的简便方法,而无需单独定义每个服务。
stack file 是一种 yaml 格式的文件,类似于 docker-compose.yml 文件,它定义了一个或多个服务,并定义了服务的环境变量、部署标签、容器数量以及相关的环境特定配置等。

Docker Swarm由两部分组成

  • Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理;
  • 应用编排:有一套API用来部署和管理容器

image.png

配置私有仓库

私有仓库不是集群必备的组件。集群的每个节点都需要安装镜像,如果不搭建私有仓库,下载镜像速度
比较耗时。

vi /etc/docker/daemon.json “insecure-registries”:[“192.168.198.101:5000”] systemctl daemon-reload systemctl restart docker

初始化第一个管理节点
关于advertise-addr和listen-addr这两个参数:

  • 前者用来指定其他节点连接m0时的地址
  • 后者指定承载swarm流量的IP和端口
  • 会在本地新建docker网络

    docker swarm init —advertise-addr 192.168.198.105:2377 —listen-addr 192.168.198.105:2377

    运行之后就会加node接口和manager接口的提示

    docker node ls docker network ls

如何加入新的节点

Docker Swarm的新节点加入策略是从管理节点获取一长串命令,被称为join token,任何想加入集群的机器只要自己执行这个join token即可加入Swarm集群;
如果有新的管理节点需要加入,在m0执行命令docker swarm join-token manager即可得到管理manager节点的join token,
如果有新的work节点需要加入,在m0执行命令docker swarm join-token worker即可得到管理work节点的join token

在manager节点执行。可以作为manager节点加入集群 docker swarm join-token manager 在manager节点执行。可以作为worker节点加入集群 docker swarm join-token worker docker node ls

manager节点说明

MANAGER STATUS列说明

  • Leader 意味着该节点是使得群的所有群管理和编排决策的主要管理器节点。
  • Reachable 意味着节点是管理者节点正在参与Raft共识。如果领导节点不可用,则该节点有资格被选为新领导者。
  • Unavailable 意味着节点是不能与其他管理器通信的管理器。如果管理器节点不可用,您应该将新的管理器节点加入群集,或者将工作器节点升级为管理器。

AVAILABILITY列说明

  • Active 意味着调度程序可以将任务分配给节点。
  • Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
  • Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。

    验证节点

    master节点: docker info

    work节点: docker info

节点权限提升/降低

将worker节点提升为manager节点,在manager节点执行如下命令: docker node promote work-01 docker node ls
将manager节点降低为worker节点,在manager节点执行如下命令: docker node demote work-02 docker node ls

脱离集群

在work节点使用命令:docker swarm leave 稍微等待几分钟,在manager节点使用命令:docker node ls,发现work节点已经脱离集群管理。

删除脱离集群的节点

先使用命令:docker node demote 节点名称。将某一个节点降为worker节点后,再删除。 使用命令:docker node rm 节点名称|节点ID 例如:docker node rm work-02 manager节点只能强制退出。命令:docker swarm leave —force。manager退出后意味着整个swarm

不复存在。

图形界面

官网地址

https://hub.docker.com/r/dockersamples/visualizer

基础镜像

拉取镜像

docker pull dockersamples/visualizer:latest

备份镜像

docker save dockersamples/visualizer:latest -o dockersamples.visualizer.tar

还原镜像

docker load -i dockersamples.visualizer.tar

运行镜像

docker run -itd —name visualizer -p 8099:8080 -e HOST=192.168.198.105 -e

PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock

dockersamples/visualizer:latest

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

测试镜像

http://192.168.209.154:8099/

相关命令

image.png
image.png
image.png