在 Docker Swarm 单点模式 下,集群只运行在一个节点上。这种方式非常适合测试 Swarm 的功能或者部署小型应用,而不需要配置多个节点的集群。以下是单点模式使用的详细步骤:
1. 初始化 Swarm 模式
在当前 Docker 主机上初始化 Swarm:
bash
docker swarm init
输出示例:
bash
Swarm initialized: current node (xxxxxx) is now a manager.
执行这条命令后,当前节点将成为 Swarm 管理节点(Manager),可以运行服务和管理 Swarm 集群。
2. 部署一个服务
在 Swarm 单点模式下,部署服务和在多节点模式下类似:
bash
docker service create \
--name my_service \
--replicas 3 \
-p 8080:80 \
nginx
参数说明:
--name my_service
:指定服务的名称。--replicas 3
:启动 3 个副本(所有副本都会运行在这个单点节点上)。-p 8080:80
:将宿主机的 8080 端口映射到容器的 80 端口。nginx
:服务使用的镜像。
3. 查看服务状态
运行以下命令查看服务状态:
bash
docker service ls
输出示例:
plaintext
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxx my_service replicated 3/3 nginx *:8080->80/tcp
查看服务的详细信息:
bash
docker service ps my_service
输出示例:
plaintext
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE
xxxxxx my_service.1 nginx manager-node Running Running x seconds
xxxxxx my_service.2 nginx manager-node Running Running x seconds
xxxxxx my_service.3 nginx manager-node Running Running x seconds
4. 管理服务副本
如果需要调整服务的副本数量,可以使用以下命令:
增加副本
bash
docker service scale my_service=5
减少副本
bash
docker service scale my_service=2
再次查看服务状态,确保副本数量已调整。
5. 删除服务
如果需要停止并删除服务,可以运行:
bash
docker service rm my_service
6. 使用 Swarm Stack 部署(单点 Compose 集成)
你还可以使用 docker stack deploy
配合 docker-compose.yml
文件,在 Swarm 单点模式下快速部署多服务应用。
示例 docker-compose.yml
文件
yaml
version: '3.9'
services:
web:
image: nginx
ports:
- "8080:80"
deploy:
replicas: 3
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
deploy:
replicas: 1
部署命令:
bash
docker stack deploy -c docker-compose.yml my_stack
查看 Stack 状态:
bash
docker stack services my_stack
7. 管理单点模式的持久化存储
在 Swarm 单点模式下,为了保证服务数据的持久化,可以使用 volumes
来挂载宿主机路径或使用 docker volume
创建持久化存储。
创建卷
bash
docker volume create my_volume
在服务中使用卷
bash
docker service create \
--name my_service \
--replicas 3 \
--mount type=volume,source=my_volume,target=/app/data \
nginx
8. 关闭 Swarm 单点模式
如果不再需要 Swarm 模式,可以运行以下命令退出 Swarm 模式:
bash
docker swarm leave --force
总结
Docker Swarm 单点模式是一种快速尝试 Swarm 特性或部署小型服务的方式。以下是常用场景:
- 快速测试:验证 Swarm 配置、服务调度和伸缩功能。
- 小型应用部署:无需多节点集群,单点模式足够支撑轻量级的生产服务。
核心命令包括:
- 初始化 Swarm:
docker swarm init
- 部署服务:
docker service create
- 扩展服务:
docker service scale
- 使用 Stack:
docker stack deploy
如果以后需要扩展,可以在现有 Swarm 集群中添加更多节点,非常灵活!