Docker Swarm 是 Docker 官方的容器编排工具,它可以让你轻松地管理多个 Docker 容器,从而构建高可用的分布式应用程序。本文将介绍 Docker Swarm 集群的使用指南,包括集群的搭建、容器的部署和扩容、服务的管理等。
什么是 Docker Swarm
Docker Swarm 是 Docker 官方的容器编排工具,它可以将多个 Docker 主机组成一个集群,从而实现容器的高可用和负载均衡。Docker Swarm 集群由多个节点组成,其中一个节点为 Swarm Manager,其余节点为 Swarm Worker。Swarm Manager 负责管理和调度容器,Swarm Worker 负责运行容器。
搭建 Docker Swarm 集群
搭建 Docker Swarm 集群需要至少两个 Docker 主机,其中一个作为 Swarm Manager,其余作为 Swarm Worker。以下是搭建 Swarm 集群的步骤:
- 安装 Docker
在每个 Docker 主机上安装 Docker,安装方法可以参考 Docker 官方文档。
- 初始化 Swarm
在 Swarm Manager 上执行以下命令初始化 Swarm:
docker swarm init --advertise-addr <MANAGER-IP>
其中 <MANAGER-IP> 是 Swarm Manager 的 IP 地址。
初始化成功后,会生成一个加入集群的命令,类似于:
docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>
将该命令复制到 Swarm Worker 上执行,即可将其加入到 Swarm 集群中。
- 部署应用程序
在 Swarm Manager 上执行以下命令部署应用程序:
docker service create --name <SERVICE-NAME> --replicas <REPLICAS> <IMAGE>
其中 <SERVICE-NAME> 是服务名称,<REPLICAS> 是容器副本数,<IMAGE> 是容器镜像。
部署成功后,可以使用以下命令查看服务状态:
docker service ls
容器的部署和扩容
在 Swarm 集群中,容器的部署和扩容是非常方便的。以下是容器的部署和扩容的步骤:
- 创建服务
在 Swarm Manager 上执行以下命令创建服务:
docker service create --name <SERVICE-NAME> --replicas <REPLICAS> <IMAGE>
其中 <SERVICE-NAME> 是服务名称,<REPLICAS> 是容器副本数,<IMAGE> 是容器镜像。
- 查看服务状态
使用以下命令查看服务状态:
docker service ls
- 扩容服务
使用以下命令扩容服务:
docker service scale <SERVICE-NAME>=<REPLICAS>
其中 <SERVICE-NAME> 是服务名称,<REPLICAS> 是容器副本数。
服务的管理
在 Swarm 集群中,服务的管理也非常方便。以下是服务的管理的步骤:
- 更新服务
使用以下命令更新服务:
docker service update --image <IMAGE> <SERVICE-NAME>
其中 <IMAGE> 是容器镜像,<SERVICE-NAME> 是服务名称。
- 删除服务
使用以下命令删除服务:
docker service rm <SERVICE-NAME>
其中 <SERVICE-NAME> 是服务名称。
示例代码
以下是一个使用 Docker Swarm 部署 Node.js 应用程序的示例代码:
// www.javascriptcn.com code example
version: "3"
services:
app:
image: node:latest
command: "npm start"
deploy:
replicas: 3
restart_policy:
condition: on-failure
update_config:
parallelism: 2
delay: 10s
resources:
limits:
cpus: "0.5"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M
ports:
- "8080:8080"
networks:
- webnet
networks:
webnet:该示例代码使用 Docker Swarm 部署了一个 Node.js 应用程序,其中服务名称为 app,容器副本数为 3,容器镜像为 node:latest,容器启动命令为 npm start,容器资源限制为 0.5 CPU 和 512MB 内存,容器资源预留为 0.25 CPU 和 256MB 内存,容器端口为 8080,容器网络为 webnet。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d4c6d0a941bf71348f73fc