Docker容器集群管理之Swarm
Docker容器集群管理主流方案
1 2 3 4 5 6 7 8 | Swarm Docker公司自研发的集群管理系统。 Kubernetes Google开源的一个容器集群管理系统,用于自动化部署、扩展和管理容器应用。也称为K8S Mesos Mesos是一个集群资源调度系统,对集群中的资源进行分配和管理。Marathon是运行在Mesos之上的一个服务管理框架,可管理容器生命周期。 Docker容器集群管理主流方案 讲 |
Swarm、Kubernetes和Mesos简单比较:
1 2 3 4 5 6 7 8 9 | 复杂性 Swarm使用标准Docker接口,集成于Docker Engine,内置Overlay网络、服务发现、负载均衡,很容易上手,学习成本低。 K8S成熟且复杂,自己的管理体系,服务发现,负载均衡等功能,学习成本高。 Mesos是一个成熟分布式资源管理框架,一个通用的集群管理系统。 功能 Swarm支持Docker Compose v3来实现服务编排。 K8S强大的功能,有着一套整体容器解决方案,使用起来更轻松。 社区活跃度 K8S社区相比Swarm和Mesos活跃度都高。 |
Swarm介绍
1 2 3 4 5 6 7 8 9 | 集群部署及节点管理 服务管理 使用原生Overlay网络 数据持久化 服务发现与负载均衡 高可用性 配置文件存储 应用实战 - 手动创建和服务编排部署LNMP网站平台 |
Swarm是什么
1 2 3 | Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1. 12 中集成了Swarm的集群管理和编排功能。可以通过初始化Swarm或加入现有Swarm来启用Docker引擎的Swarm模式。 Docker Engine CLI和API包括了管理Swarm节点命令,比如添加、删除节点,以及在Swarm中部署和编排服务。 也增加了服务栈(Stack)、服务(Service)、任务(Task)概念。 |
Swarm两种角色
1 2 | Manager:接收客户端服务定义,将任务发送到worker节点;维护集群期望状态和集群管理功能及Leader选举。默认情况下manager节点也会运行任务,也可以配置只做管理任务。 Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每个服务期望状态。 |
Swarm的特点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1. Docker Engine集成集群管理 使用Docker Engine CLI 创建一个Docker Engine的Swarm模式,在集群中部署应用程序服务。 2. 去中心化设计 Swarm角色分为Manager和Worker节点,Manager节点故障不影响应用使用。 3. 扩容缩容 可以声明每个服务运行的容器数量,通过添加或删除容器数自动调整期望的状态。 4. 期望状态协调 Swarm Manager节点不断监视集群状态,并调整当前状态与期望状态之间的差异。例如,设置一个服务运行 10 个副本容器,如果两个副本的服务器节点崩溃,Manager将创建两个新的副本替代崩溃的副本。并将新的副本分配到可用的worker节点。 5. 多主机网络 可以为服务指定overlay网络。当初始化或更新应用程序时,Swarm manager会自动为overlay网络上的容器分配IP地址。 6. 服务发现 Swarm manager节点为集群中的每个服务分配唯一的DNS记录和负载均衡VIP。可以通过Swarm内置的DNS服务器查询集群中每个运行的容器。 7. 负载均衡 实现服务副本负载均衡,提供入口访问。也可以将服务入口暴露给外部负载均衡器再次负载均衡。 8. 安全传输 Swarm中的每个节点使用TLS相互验证和加密,确保安全的其他节点通信。 9. 滚动更新 升级时,逐步将应用服务更新到节点,如果出现问题,可以将任务回滚到先前版本。 |
集群部署及节点管理
使用swarm前提
1 2 | Docker版本 1.12 + 集群节点之间保证TCP 2377 、TCP / UDP 7946 和UDP 4789 端口通信 |
节点规划
1 2 3 4 | 操作系统ubuntu18. 04 管理节点: 192.168 . 56.128 工作节点: 192.168 . 56.129 工作节点: 192.168 . 56.130 |
查看当前docker版本
管理节点初始化swarm
1 | docker swarm init - - advertise - addr 192.168 . 56.128 |
工作节点加入swarm
1 | docker swarm join - - token SWMTKN - 1 - 2jxm5hdcno1m06v1eqzsrsrcqg1hjsvkotdojo87n67lasngkf - 2ick8vihgd6jmkgpoe09wra2s 192.168 . 56.128 : 2377 |
管理节点查看
查看节点信息
1 | docker node inspect docker2 |
查看运行任务数
1 | docker node ps |
服务管理
创建服务 创建一个服务副本数为1 名字为hello
1 | docker service create - - replicas 1 - - name hello busybox |
查看
MODE是replicated会根据默认调度算法分配节点
REPLICAS副本数 右边是设定多少 左边是启动多少
查看启动状态多次失败,因为busybox是一个基础镜像没有持续运行
加一个持续运行的任务
1 | docker service update - - args "ping www.baidu.com" hello |
过滤出只在运行的
1 | docker service ps - f "desired-state=running" hello |
以上信息可以查看到是工作在docker1这个节点上面的
对该服务进行扩容
1 | docker service scale hello = 3 |
指定docker1只作为管理节点
1 | docker node update - - availability drain docker1 |
作为manage的节点没有容器了 会把副本复制到其他节点管理节点的docker删除
滚动更新服务
1 2 3 4 5 | docker service create \ > - - replicas 3 \ > - - name redis \ > - - update - delay 10s \ > redis: 3.0 . 6 |
更新
1 | docker service update - - image redis: 3.0 . 7 redis |
显示更新状态以及老版本信息
查看刚刚设置的更新策略
1 | docker service inspect redis |
创建服务时设定更新策略
1 | docker service create - - name my_web - - replicas 10 - - update - delay 10s - - update - parallelism 2 - - update - failure - action continue nginx: 1.12 |
--update-parallelism最大并行数量
--update-failure-action continue更新失败后继续
服务更新
1 | docker service update - - image nginx: 1.13 my_web |
创建服务时设定回滚策略 创建前删除docker service rm my_web
1 2 3 4 5 6 7 | docker service create \ - - name my_web \ - - replicas 10 \ - - rollback - parallelism 2 \ - - rollback - monitor 20s \ - - rollback - max - failure - ratio . 2 \ nginx: 1.12 |
先更新
1 | docker service update - - image nginx: 1.13 my_web |
手动回滚
1 | docker service update - - rollback my_web |
又回滚到1.12版本了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!