Docker Swarm 是 Docker 官方提供的一种容器编排和调度的工具,它允许将多个 Docker 节点组织成一个集群,从而扩展应用程序并实现高可用性。本文将介绍 Docker Swarm 集群搭建的步骤以及集群管理的相关知识。
集群搭建
准备工作
首先需要准备好下列工作:
- 安装 Docker:由于 Docker Swarm 是基于 Docker 的,所以需要先安装 Docker。
- 创建主节点:主节点是 Docker Swarm 集群的管理节点,创建主节点可以使用 Docker Machine 或者自己手动创建一台主节点。
- 创建工作节点:工作节点是 Docker Swarm 集群的工作节点,可以在同一台主机上创建多个工作节点或者在不同机器上创建多个工作节点。
创建主节点
可以使用 Docker Machine 创建主节点。
docker-machine create --driver virtualbox manager
其中,--driver
指定了使用的虚拟化引擎,这里使用的是 VirtualBox;manager
是节点的名称。
创建成功后可以使用 docker-machine ls
命令查看当前的 Docker 主机列表。
创建工作节点
可以在同一台主机上创建多个工作节点或者在不同机器上创建多个工作节点。在实际应用中,通常会在多台机器上部署多个工作节点以实现高可用性。
在相同主机上创建工作节点
使用 Docker Machine 创建工作节点。
docker-machine create --driver virtualbox worker01 docker-machine create --driver virtualbox worker02
创建成功后可以使用 docker-machine ssh
命令登录到相应的工作节点。
在不同主机上创建工作节点
在不同主机上创建工作节点需要在每个节点上安装好 Docker 环境,并在主节点上添加工作节点。
首先在每个节点上安装 Docker。
然后在主节点上添加工作节点。
docker swarm join --token <worker_token> <manager_ip>:<manager_port>
其中,worker_token
是工作节点的 Token,manager_ip
和 manager_port
是主节点的 IP 地址和端口号。
初始化 Swarm 集群
使用下列命令在主节点上初始化 Docker Swarm 集群。
docker swarm init --advertise-addr <manager_ip>
其中,advertise-addr
指定了主节点的 IP 地址。
执行成功后,会输出如下信息:
Swarm initialized: current node (yzj9nm9xxxxxx1z076fymvcah) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-0t709sz29xxxxxc5wyfh701quclt0y7api1zn9ac9jzgcipyhi---------h99w4ks4a4nn770a8egj 192.168.99.100:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
其中,Swarm initialized
说明初始化成功,current node is now a manager
说明当前节点是管理节点。输出的 docker swarm join
命令可以将工作节点加入到集群中。
使用 docker node ls
命令可以查看加入到 Swarm 集群中的节点列表。
集群管理
Docker Swarm 集群管理可以分为以下几个方面:
- 扩展应用程序
- 部署服务
- 伸缩服务
- 更新服务
扩展应用程序
扩展应用程序需要使用 Docker Compose,Docker Compose 可以在 Docker Swarm 中进行扩展应用程序。
例如,下面的 docker-compose.yml 文件定义了一个应用程序,该应用程序包含两个服务:web 和 redis。其中,web 服务使用 nginx 镜像,redis 服务使用 redis 镜像。
-- -------------------- ---- ------- -------- --- --------- ---- ------ ----- ------ - ------- ----------- - ----- ------ ------ -----
使用 docker stack deploy
命令可以在 Swarm 集群中部署该应用程序。
docker stack deploy -c docker-compose.yml myapp
其中,myapp
是该服务的名称。
使用 docker stack ls
命令可以列出所有服务。
使用 docker stack services myapp
命令可以列出名为 myapp
的服务中的所有服务。
部署服务
可以使用 docker service create
命令创建一个服务。
例如,下面的命令可以创建一个名为 nginx
的服务。
docker service create -p 80:80 --replicas 3 --name nginx nginx
其中,-p
参数指定了服务的端口号,--replicas
参数指定了服务的副本数。
使用 docker service ls
命令可以查看所有的服务。
使用 docker service ps <service_name>
命令可以查看指定服务的容器。
伸缩服务
可以使用 docker service scale
命令来修改服务的副本数。
例如,下面的命令可以将一个名为 nginx
的服务的副本数修改为 4 个。
docker service scale nginx=4
使用 docker service ps nginx
命令可以查看更新后的服务容器。
更新服务
可以使用 docker service update
命令来更新服务。
例如,下面的命令可以将名为 nginx
的服务中容器的 nginx 镜像升级到新版本的 nginx 镜像。
docker service update --image nginx:1.19.7 nginx
使用 docker service ps nginx
命令可以查看更新后的服务容器。
结论
本文介绍了 Docker Swarm 集群的搭建和管理,包括:集群搭建的步骤、集群管理的方面以及具体的示例代码。通过学习本文,读者可以了解 Docker Swarm 集群的基本原理、搭建和管理的方法,更好的运用 Docker 技术实现应用程序的部署和管理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6700e0aa0bef792019ad887e