type
status
date
slug
summary
category
tags
create_time
Aug 10, 2025 08:47 AM
icon
password
my_create_time

📝 前言

在容器技术的早期阶段,Docker 以其简单易用的特性迅速成为开发者的“标配”,从构建、打包到运行应用,几乎一条命令就能搞定。
然而,随着业务规模扩大、部署环境复杂化,仅依靠单机 Docker 已经难以满足弹性伸缩、高可用与自动化运维的需求。
为了解决多容器管理问题,Docker Compose 出现作为中间过渡方案,而最终 Kubernetes(K8s) 则成为集群编排的终极解决方案。
本文是云原生之旅第三部分的第一篇,带领大家从单机 Docker 的视角,循序渐进地走到 Kubernetes 集群的世界。

🧠 本章知识卡片

notion image

🚀 本章小节

1️⃣ 单机 Docker 的局限性

Docker 在单机环境中最大的优势是轻量、快速、易用,但它也存在天然的限制:
  • 资源限制:所有容器运行在同一台机器上,CPU、内存有限。
  • 高可用不足:主机宕机意味着所有容器全部不可用。
  • 多容器管理困难:如果应用依赖多个服务,需要手动维护容器启动顺序与参数。
  • 扩展瓶颈:弹性伸缩需要人工干预,无法自动根据流量变化调整容器数量。
在业务初期,这些限制并不明显,但一旦用户规模扩大,就会直接影响系统稳定性和运维效率。

2️⃣ Docker Compose:单机多容器编排的过渡方案

在迁移到 Kubernetes 之前,Docker Compose 是很多团队的自然选择。
它是一个单机容器编排工具,通过一个 YAML 文件描述多容器应用及其依赖,使用 docker compose up 一键启动。
优点
  • 配置集中化:所有服务定义集中在 docker-compose.yml 中。
  • 多容器管理:数据库、缓存、后端、前端等可一次性启动/停止。
  • 简化依赖管理:支持容器间的网络与启动顺序定义。
局限
  • 依旧是单机:无法跨节点调度容器。
  • 伸缩能力有限:支持 scale 手动扩容,但不能自动伸缩。
  • 高可用缺失:容器或宿主机异常需要人工处理。
适用场景:本地开发环境、多容器单机部署、测试环境。
更多详情介绍可参看之前的一篇文章:《第二部分:从 Docker 到 Docker Compose》

3️⃣ 为什么选择 Kubernetes

Kubernetes 的诞生,就是为了管理多台机器上的容器,它带来了许多 Docker/Compose 所不具备的能力,以下是它们的对比:
特性
单机 Docker
Docker Compose
Kubernetes
弹性伸缩
手动
手动
自动伸缩(HPA)
高可用
多节点冗余,自动容器调度
服务发现
需手动配置
自动单机网络
内置 DNS 与跨节点服务发现
滚动升级
需停机或自写脚本
原生滚动更新与回滚
资源调度
单机
单机
集群级别智能调度
运维自动化
一句话总结:
Docker 解决了“如何构建并运行容器”的问题,Docker Compose 解决了“如何在单机管理多容器”的问题,Kubernetes 解决了“如何大规模、自动化、可靠地运行容器”的问题。

4️⃣ 使用 kompose 一键迁移至 Kubernetes

什么是 kompose ?
kompose 是 Kubernetes 社区官方维护的一个迁移工具,可以一键把 Docker Compose 转成 Kubernetes YAML。
如果已经有了docker-compose.yaml文件,使用该工具可以大大减少手工编写YAML的工作量。
安装 kompose
PS:如果无法从 github 官方下载,可关注公众号【青萍叙事】,回复kompose即可获取快速下载链接。
一键转换 YAML kompose 的用法也很简单,一键即可将docker-compose.yaml文件转换并生成k8s yaml

✅ 总结

从单机 Docker 到 Docker Compose 再到 Kubernetes,不只是一次工具迁移,更是一次运维思维的升级
  • 单机思维多容器协作思维再到集群思维
  • 手工部署声明式管理
  • 资源限制弹性扩展
未来,随着 Serverless + Kubernetes 的结合,开发者将更少关注底层集群管理,而把更多精力投入到业务逻辑上。
对于正处在业务增长阶段的团队来说,以 Docker Compose 作为过渡,将会让迁移过程更加平滑、风险更可控。
而借助 kompose 工具,开发者可以无缝迁移现有 Compose 配置到 Kubernetes,降低学习和改造成本。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
Nginx+ACME服务器搭建
下一篇
第二部分:从 Docker 到 Containerd

评论
Loading...