Docker Swarm 是什么?
Docker Swarm 是一个运行在 Docker 平台上的容器编配工具。它帮忙用户创立和治理 Docker 节点集群。Docker 集群是提供冗余的一个要害概念,当集群中的一个或多个节点产生故障时,Docker Swarm 能够进行故障转移。
Docker Swarm 应用规范的 Docker API 与其余工具 (例如 Docker Engine) 进行通信。它智能地将容器调配给工作节点,并通过调度容器使之在最合适的节点上运行,确保资源优化。
先决条件
为了演示 Docker Swarm 是如何工作的,咱们有一个简略的集群,其中包含一个集群管理器节点和两个工作节点,如下所示。Manager 节点解决所有集群治理工作,而 worker 节点将运行容器。
- swarm-manager 10.128.0.57
- worker-node-1 10.128.0.58
- worker-node-2 10.128.0.59
(第 1 步) 配置 Cluster hosts 文件
请登录每个节点,而后应用以下条目更新 /etc /hosts 文件
swarm-manager 10.128.0.57
worker-node-1 10.128.0.58
worker-node-2 10.128.0.59
接下来,确保所有节点能够互相 ping 通。
请在 swarm-manager 节点上执行以下命令
$ ping -c 4 10.128.0.58
$ ping -c 4 10.128.0.59
请在 worker-node-1 节点上执行以下命令
$ ping -c 4 10.128.0.57
$ ping -c 4 10.128.0.59
请在 worker-node-2 节点上执行以下命令
$ ping -c 4 10.128.0.57
$ ping -c 4 10.128.0.58
(第 2 步) 在所有节点上装置 Docker CE
咱们将装置 Docker Community Edition (Docker CE),它能够收费装置和应用。
因而,登录到每个节点并更新本地包索引。
$ sudo apt update
接下来,装置装置过程中所需的依赖包
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
装置了所有软件包后,增加 Docker GPG 密钥
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
将官网的 Docker 软件源增加到你的 Ubuntu 22.04 零碎中
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
接下来,更新本地包索引,使零碎可能辨认新增加的软件源。
$ sudo apt update
而后从官网软件源中装置 Docker
$ sudo apt install docker-ce -y
该命令将装置 Docker 以及 Docker 所需的其余包,以使其失常工作。
装置完 Docker 后,请将以后登录的用户增加到 Docker 组中,以防止每次运行 Docker 时都以 sudo 用户运行。
$ sudo usermod -aG docker ${USER}
$ newgrp docker
(第 3 步) 确认 Docker 在所有节点上运行
装置之后,Docker 守护过程会主动启动。能够验证服务是否正在运行,执行命令
$ sudo systemctl status docker
另外,请确保启用 Docker 服务,以便它在启动时主动启动。
$ sudo systemctl enable docker
(第 4 步) 创立 Docker Swarm 集群
下一步是在管理器节点上初始化 Docker Swarm 集群。初始化之后,咱们将向集群中增加工作节点。
要创立 Docker Swarm 集群,请运行命令:
$ sudo docker swarm init --advertise-addr 10.128.0.57
一旦初始化完 Docker Swarm,将会在终端上显示退出 worker 节点到集群的命令。复制该命令,因为您须要像后面提到的那样在每个工作节点上运行它。
接下来,登录回每个 worker 节点并粘贴刚复制的命令以退出集群。
$ sudo docker swarm join --token SWMTKN-1-1k397e5o52cae0yipopqcu9werjcwuss1exbyj4635rrjjl723-7ocx56uhb7p1ri7h2u6ynxyno 10.128.0.57:2377
如果一切顺利,您应该会失去以下输入
接下来,确认所有节点都退出了集群,如下所示。
$ sudo docker node ls
您应该失去以下输入,显示集群中的所有节点。
(第 5 步) 测试 Docker Swarm 装置
要测试 docker 集群的装置,请转到 Manager 节点并将一个应用程序部署到集群中。在这个例子中,咱们部署了一个 Nginx web 容器,并将它映射到主机上的 8080 端口。
$ sudo docker service create --name web-server --publish 8080:80 nginx:latest
接下来,验证已部署的应用程序服务的状态。
$ sudo docker service ls
(第 6 步) 创立服务正本
最初,创立服务的三正本,并在 Docker Manager 和 Worker 节点上进行扩大。
$ sudo docker service scale web-server=3
接下来,确认正本的状态。这一次,你会留神到咱们有 3 个正本。
此时,Nginx web 容器应该运行在集群中所有的节点上,端口为 8080。要确认这一点,请拜访您的浏览器,并从所有节点拜访 web 服务器。
http://manager-node:8080
http://worker-node-1:8080
http://worker-node-2:8080
我的开源我的项目
- course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 – github 仓库)