docker swarm单点模式如何使用

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 特性或部署小型服务的方式。以下是常用场景:

  1. 快速测试:验证 Swarm 配置、服务调度和伸缩功能。
  2. 小型应用部署:无需多节点集群,单点模式足够支撑轻量级的生产服务。

核心命令包括:

  • 初始化 Swarm:docker swarm init
  • 部署服务:docker service create
  • 扩展服务:docker service scale
  • 使用 Stack:docker stack deploy

如果以后需要扩展,可以在现有 Swarm 集群中添加更多节点,非常灵活!

相关推荐
hoppss几秒前
根据docker file 编译镜像
运维·docker·容器
qq_429856571 分钟前
docker 删除容器和镜像
运维·docker·容器
PyAIGCMaster2 分钟前
Docker学习记录:安装nginx
学习·nginx·docker
Rossy Yan16 分钟前
入门级容器技术解析:Docker和K8s的区别与关系
docker·容器·kubernetes
Dusk_橙子3 小时前
在K8S中,如何查看kubelet组件的日志?
容器·kubernetes·kubelet
ccmjga7 小时前
升级 Spring Boot 3 配置讲解 —— 如何在 Spring Boot 3 中接入生成式 AI?
java·人工智能·spring boot·后端·docker·面试·单元测试
转码的小石8 小时前
使用docker 通过lobechat部署ollama中的模型
运维·docker·容器
大卫talk9 小时前
使用Docker搭建npm私有仓库
前端·docker·npm
wuzi_uzi10 小时前
Docker 部署 elasticsearch:7.14.0 与 kibana:7.14.0
elasticsearch·docker·jenkins
PyAIGCMaster10 小时前
docker学习记录:部署es+kibana
学习·elasticsearch·docker