蓝戒博客

  • 首页
  • 研发说
  • 架构论
  • 效能录
  • AI谈
  • 随笔集
智构苍穹
融合 AI、架构与工程实践,沉淀方法论,构建可持续的技术价值。
  1. 首页
  2. 研发说
  3. 正文

Docker 进阶(四):使用 Docker Swarm 与 Kubernetes 实现容器编排

2026年1月17日 374点热度 0人点赞 0条评论

在前面的几篇文章中,我们已经解决了几个核心问题:

  • Docker 进阶(一):掌握镜像、容器、Dockerfile 等基础
  • Docker 进阶(二):理解网络与数据卷,解决通信与数据持久化
  • Docker 进阶(三):吃透镜像 Layer 与缓存机制,优化构建与发布效率

当应用进入 多实例、高可用、可扩缩容 阶段时,一个新的问题不可避免地出现:

如何在多台机器上,统一管理、调度、扩缩、恢复这些容器?

这正是 容器编排(Container Orchestration) 要解决的问题。


一、为什么需要容器编排?

在生产环境中,容器绝不会只是 docker run 那么简单。

1️⃣ 现实中的问题

  • 一个服务需要 多个副本
  • 容器异常退出,需要 自动重启
  • 多个服务之间存在 依赖关系
  • 需要 滚动更新,而不是一次性停服
  • 流量需要 负载均衡
  • 不同环境(测试 / 预发 / 生产)配置不同

如果继续靠脚本和人工操作,很快就会失控。


二、容器编排的核心能力

无论是 Docker Swarm 还是 Kubernetes,本质都在解决同一类问题:

能力说明
服务声明描述“我想要什么”,而不是“我怎么做”
调度自动把容器分配到合适的节点
副本管理保证服务副本数符合预期
自愈能力容器或节点异常时自动恢复
服务发现服务之间通过名称通信
负载均衡请求自动分发到多个实例
滚动更新平滑发布新版本

三、Docker Swarm:Docker 官方的编排方案

1️⃣ 什么是 Docker Swarm?

Docker Swarm 是 Docker 内置的集群与编排系统,特点是:

  • 零额外安装
  • 与 Docker CLI 完全一致
  • 学习成本低
  • 适合中小规模集群

一句话总结:

Swarm = Docker 原生的“轻量级 Kubernetes”


2️⃣ Swarm 的核心概念

概念说明
Node集群中的一台机器
Manager负责调度和集群状态
Worker运行容器的节点
Service一个服务定义
TaskService 的具体实例

3️⃣ 初始化 Swarm 集群

Bash
docker swarm init

查看节点:

Bash
docker node ls

4️⃣ 使用 Service 部署应用

Bash
docker service create \
  --name web \
  --replicas 3 \
  -p 80:80 \
  nginx

此时你会发现:

  • 不需要自己做负载均衡
  • 任意节点访问 80 端口都能命中服务
  • 容器挂了会自动拉起

5️⃣ 使用 docker-compose 进行 Swarm 编排

YAML
version: "3.8"

services:
  web:
    image: nginx
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"

部署:

Bash
docker stack deploy -c docker-compose.yml myapp

6️⃣ Swarm 的优缺点

优点:

  • 学习曲线低
  • 原生 Docker 支持
  • 快速上手

缺点:

  • 生态相对较小
  • 社区活跃度下降
  • 不适合超大规模集群

四、Kubernetes:事实上的行业标准

1️⃣ 为什么 Kubernetes 会成为主流?

Kubernetes(K8s)最初由 Google 推出,如今已成为 云原生事实标准:

  • 公有云全面支持(阿里云 / AWS / GCP)
  • 强大的扩展能力
  • 成熟的生态体系
  • 超大规模实践验证

一句话总结:

Swarm 更像“工具”,Kubernetes 更像“平台”。


2️⃣ Kubernetes 的核心对象

对象作用
Pod最小调度单元
Deployment无状态应用管理
Service服务发现与负载均衡
ConfigMap配置管理
Secret敏感信息管理
Ingress七层流量入口

3️⃣ 一个最简单的 Deployment 示例

YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80

部署:

Bash
kubectl apply -f deployment.yaml

4️⃣ Kubernetes 的核心优势

  • 声明式配置(期望状态)
  • 强大的自动化能力
  • 高度可扩展
  • 完整的云原生生态

5️⃣ Kubernetes 的挑战

  • 学习曲线陡峭
  • 概念多、对象多
  • 运维复杂度高

五、Swarm vs Kubernetes:如何选择?

维度Docker SwarmKubernetes
学习成本⭐⭐⭐⭐⭐
上手速度快慢
集群规模小~中中~超大
生态较弱极其丰富
云厂商支持一般一流
未来趋势弱化主流

选择建议

  • 小团队 / 内部系统 / 学习阶段 → Docker Swarm
  • 中大型项目 / 云原生 / 长期演进 → Kubernetes

六、前端与容器编排的真实落地场景

对前端工程师来说,编排并不是“运维专属”。

常见应用场景

  • 前端 多环境部署
  • SSR / Node 服务的 横向扩展
  • 前端网关 / BFF 服务
  • 灰度发布与回滚
  • CI/CD 自动部署

当你写下第一份 Deployment YAML,
就真正走进了 云原生工程师 的世界。


七、小结

在这一篇中,我们完成了一个重要的跃迁:

从“管理容器”,到“管理服务与集群”。

你现在已经具备了:

  • 理解容器编排的必要性
  • 使用 Docker Swarm 快速构建集群
  • 认识 Kubernetes 的核心价值
  • 根据项目规模选择合适方案

下一篇预告

Docker 进阶(五):Docker + CI/CD —— 从代码提交到自动部署

我们将把 Docker、镜像优化、编排能力真正串进 工程化流水线。

标签: Docker Swarm Docker 进阶 Kubernetes 容器编排
最后更新:2026年1月17日

cywcd

我始终相信,技术不仅是解决问题的工具,更是推动思维进化和创造价值的方式。从研发到架构,追求极致效能;在随笔中沉淀思考,于 AI 中对话未来。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

cywcd

我始终相信,技术不仅是解决问题的工具,更是推动思维进化和创造价值的方式。从研发到架构,追求极致效能;在随笔中沉淀思考,于 AI 中对话未来。

最新 热点 随机
最新 热点 随机
深扒 Google Gemini Spark 这位"24小时不下班"的AI管家 Google推出Code Wiki,把“屎山代码”秒变可聊天的百科全书! VideoLingo凭什么敢称“全自动的视频本地化流水线”? 首个超2万亿级开源模型Kimi K3震撼发布,大模型格局彻底变天了? 别再手写 AI Agent 了!谷歌开源 agents-cli,一键给你的 AI 助手加满神仙级技能点 ChatGPT 实时语音 vs Gemini Live:深度实测!谁才是地表最强“无痛嘴替”?
开发者集体起立!cc-switch更新:原生干掉外挂,协议、会话、技能全包圆了!一键生成百万播放短视频?被吹上天的RedditVideoMakerBot,到底是搞钱神器还是时间杀手?别再迷信传统 RAG 了!知识库新物种 SAG 强势登场,实时干掉大模型“幻觉”!别再死磕提示词了!Google Flow Agent 彻底颠覆 AI 视频,有手就能当导演剪映要收网了?狂割韭菜后,这款狂揽5.7万Star的开源神器砸了谁的饭碗!被Figma卡脖子?这款自托管的开源神仙工具:Penpot,才是设计与开发的终极解药!
深入理解 Nginx:前端工程化时代的流量枢纽 网页顶部页面加载线性进度条js及css3实现方法 从设计到开发:探索ArcoDesign组件库与ArcoPro的最佳实践 Docker 进阶(六):生产环境中的 Docker 安全、监控与日志体系 2个月34k Stars:一个终于不会"失忆"的AI Agent 全面理解WebSocket与Socket、TCP、HTTP的关系及区别
最近评论
渔夫 发布于 9 个月前(11月05日) 学到了,感谢博主分享
沙拉小王子 发布于 9 年前(11月30日) 适合vue入门者学习,赞一个
沙拉小王子 发布于 9 年前(11月30日) 适合vue入门者学习,赞一个
cywcd 发布于 9 年前(04月27日) 请参考一下这篇文章http://www.jianshu.com/p/fa4460e75cd8
cywcd 发布于 9 年前(04月27日) 请参考一下这篇文章http://www.jianshu.com/p/fa4460e75cd8

COPYRIGHT © 2025 蓝戒博客_智构苍穹-专注于大前端领域技术生态. ALL RIGHTS RESERVED.

京ICP备12026697号-2