Docker Swarm介绍及使用入门

2021-11-28  本文已影响0人  文景大大

一、Swarm介绍

Docker Swarm是管理跨节点容器的编排工具,相较于Docker Compose而言,Compose只能编排单节点上的容器,Swarm将一群Docker节点虚拟化为一个主机,使得用户只要在单一主机上操作就能完成对整个容器集群的管理工作。如果下载的是最新版的Docker,那么Swarm就已经被包含在内了,无需再安装。

Docker Swarm架构包含两种角色,manager和node,前者是Swarm Daemon工作的节点,包含了调度器、路由、服务发现等功能,负责接收客户端的集群管理请求,然后调度Node进行具体的容器工作,比如容器的创建、扩容与销毁等。 manager本身也是一个node。

Swarm工作示意图

通常情况下,为了集群的高可用,manager个数>=3的奇数,node的个数则是不限制。

二、Swarm实例

2.1 准备工作

我们需要准备好三个节点,并在各自节点上安装好Docker Engine,才能进行接下来的实例搭建。

此处,我们选择购买阿里云的三个ECS云服务器,它们都是在一个地域里面,对应的私有地址IP和修改的host name分别是:

172.25.206.125 ————作为node1
172.25.206.126 ————作为node2
172.22.147.207 ————作为manager

我们首先需要重置root的登录密码,然后ssh登录后,确保相互之间可以ping通,然后再继续下面的操作。一般三台机器如果都在同一个区的话,使用私有地址相互之间肯定是联通的。

然后登录各个容器内部的命令行,进行Docker Engine的安装,该步骤可以参考另外一篇文章:《CentOS系统安装Docker》,安装完成后可以执行docker --version进行查看,务必确保全部安装成功以后再进入下面的步骤。

2.1 创建集群

在创建集群之前,我们使用docker node ls想查看下集群中节点的信息,反馈目前没有节点信息,并且当前节点并不是manager。

[root@manager ~]# docker node ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

那么我们首先就在manager这个节点上执行如下操作,表示要将它设置为manager,并且设置自己的通讯IP为172.22.147.207

[root@manager ~]# docker swarm init --advertise-addr 172.22.147.207
Swarm initialized: current node (s0eoali1x32ly22jo85ebeb0w) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-57msikozxxt44uxz5r8hihmakp4zh1cr89v7zlxhyc8b5iojkt-5ea8uh68jcuy8m6f9ma7x0zg5 172.22.147.207:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

如上就完成了manager节点的设置,并且得到提示信息如下:

我们目前演示的是一个manager,两个工作node的模式,所以在另外两台node1和node2上执行第一个命令即可:

[root@node1 ~]# docker swarm join --token SWMTKN-1-57msikozxxt44uxz5r8hihmakp4zh1cr89v7zlxhyc8b5iojkt-5ea8uh68jcuy8m6f9ma7x0zg5 172.22.147.207:2377
This node joined a swarm as a worker.

如此,一个swarm集群就算搭建完成了。

2.2 使用集群

manager是我们管理集群的入口,我们的docker命令都是在manager上执行,node节点上是不能执行dockr命令的,这一点要十分牢记。

上一篇下一篇

猜你喜欢

热点阅读