Kubernetes (K8s) 与 Docker 的区别

Docker — 容器引擎

Docker 负责创建和运行单个容器,是容器化技术的基础工具。

能力 说明
镜像构建 docker build 打包应用 + 依赖为镜像
容器运行 docker run 启动单个容器
单机管理 在一台机器上管理容器生命周期
适用场景 开发、调试、单节点部署

Kubernetes (K8s) — 容器编排平台

K8s 负责管理大规模集群中的容器,解决多机器协作问题。

能力 说明
集群编排 跨多台机器调度容器,自动分配到合适的节点
自动扩缩容 根据流量自动增减 Pod 数量
自愈恢复 容器/节点故障时自动重启或迁移
服务发现/负载均衡 自动分配 IP,对外提供统一入口
滚动更新 零停机部署新版本
适用场景 生产环境、多节点、大规模服务

类比理解

类比 Docker Kubernetes
餐厅 厨师做一道菜 经理协调整个厨房
交通 一辆车的发动机 城市交通调度系统
问题 “怎么跑一个容器?” “怎么跑 1000 个容器?”

关系

┌─────────────────────────────────────────┐
│           Kubernetes (K8s)              │
│  ┌───────────┐  ┌───────────┐  ┌─────┐ │
│  │  Node 1   │  │  Node 2   │  │ ... │ │
│  │ ┌───────┐ │  │ ┌───────┐ │  │     │ │
│  │ │ Docker│ │  │ │ Docker│ │  │     │ │
│  │ │ (容器) │ │  │ │ (容器) │ │  │     │ │
│  │ └───────┘ │  │ └───────┘ │  │     │ │
│  └───────────┘  └───────────┘  └─────┘ │
└─────────────────────────────────────────┘
  • Docker 是底层运行时,负责跑容器
  • K8s 是上层编排器,调用 Docker(或其他容器运行时)来管理集群
  • K8s 1.24 之后默认使用 containerd 替代 Docker 作为运行时,但 docker build 仍可用于构建镜像

什么时候用什么

场景 选择
本地开发、测试 Docker
单个服务器部署 Docker + Docker Compose
生产环境,多节点 Kubernetes
需要自动扩缩容、自愈 Kubernetes
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐