蓝戒博客

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

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

2026年1月17日 134点热度 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 中对话未来。

最新 热点 随机
最新 热点 随机
一人指挥 AI 程序员军团:OpenAI:Codex App 来了,开发效率或将提升 10 倍 AI 开始雇佣人类?RentAHuman 爆火背后:一场关于「AI 代理经济」的真实实验 大模型巅峰对决:GPT-5.4 Pro 横空出世,Gemini 3.1、Grok 4.2、Claude Opus 4.6 谁才是最强 AI? AI 编程神器 Qoder 专业版免费体验攻略 + QoderWork 全面解析 OpenClaw 太费 Token 的终极解决方案(可省 90%+) Agent 生态分裂:OpenClaw 之外,OpenFang 给出另一条路
基于 Monaco Editor 的 Web Component 智能提示实践Skills Desktop 完全指南:从认识到实践,打造你的 AI 技能中枢不只是聊天机器人:Composio,让 AI 真正“动手干活”AI 智能体框架选型:主流方案对比与建议ChatDev:把 AI 组织成“团队”,帮你把事做完的多智能体平台Codex 国内如何使用与安装?一篇真正能跑通的完整教程
在线考试防作弊js实现代码完整版 解决window下使用cmd运行node安装报错: npm ERR! code EIO 移动端调试神器: eruda介绍 移动端高仿APP侧滑导航控件Slideout.js flutter系列之开发环境搭建 生产环境下的 Token 前端存储方案与安全权衡
最近评论
渔夫 发布于 4 个月前(11月05日) 学到了,感谢博主分享
沙拉小王子 发布于 8 年前(11月30日) 适合vue入门者学习,赞一个
沙拉小王子 发布于 8 年前(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