Docker:安装docker-swarm

安装docker-swarm

官网文档

https://docs.docker.com/engine/swarm/

概述

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,DockerCompose一个在单个服务器或主机上创建多个容器的工具,可以将组成某个应该的多个docker容器编排在一起,同时管理。而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口(docker stack)统一管理这些Docker主机上的各种Docker资源。

stack 是构成特定环境中的 service 集合, 它是自动部署多个相互关联的服务的简便方法,而无需单独定义每个服务。

stack file 是一种 yaml 格式的文件,类似于 docker-compose.yml 文件,它定义了一个或多个服务,并定义了服务的环境变量、部署标签、容器数量以及相关的环境特定配置等。

Docker Swarm由两部分组成:

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

Docker:安装docker-swarm_第1张图片

配置私有仓库

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

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

docker node ls

docker network ls

Docker:安装docker-swarm_第2张图片

在这里插入图片描述

MANAGER STATUS列说明:

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

AVAILABILITY列说明:

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

如何加入新的节点

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

举例

加入worker节点

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

在这里插入图片描述
在新worker节点执行
在这里插入图片描述
在manager节点查看

# 该命令只能在管理节点执行
docker node ls

在这里插入图片描述
加入manager节点

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

在这里插入图片描述
在新manager节点执行
在这里插入图片描述
在manager节点查看

# 该命令只能在manager节点执行
docker node ls

Docker:安装docker-swarm_第3张图片

验证节点

# master节点:
docker info

# work节点:
docker info

下面图片是worker部分
Docker:安装docker-swarm_第4张图片

节点权限提升/降低

# 将manager节点降低为worker节点,在manager节点执行如下命令:
docker node demote work-02
# 该命令只能在manager节点执行
docker node ls

查看
Docker:安装docker-swarm_第5张图片

# 将worker节点提升为manager节点,在manager节点执行如下命令:
docker node promote work-01
# 该命令只能在manager节点执行
docker node ls

Docker:安装docker-swarm_第6张图片

脱离集群

# 在work-02节点使用命令:
# 此命令必须在要拖里的节点上使用,
# 如果集群只有一个manager,manager节点只能强制退出。命令:docker swarm leave --force。manager退出后意味着整个swarm不复存在。
docker swarm leave

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

在这里插入图片描述

删除脱离集群的节点

先使用命令:docker node demote 节点名称。将某一个节点降为worker节点后,再删除。
使用命令:docker node rm 节点名称|节点ID

# 在manager节点上执行
docker node rm work-02

在这里插入图片描述

# 该命令只能在manager节点执行
docker node ls

在这里插入图片描述

你可能感兴趣的:(docker,docker,容器,运维,docker-swarm,容器编排)