TL;DR

Docker 是单机容器运行时,负责把应用打包成镜像并运行;Kubernetes(K8s)是跨多台机器的容器编排系统,负责调度、伸缩、自愈、服务发现和滚动发布。单机或小项目用 Docker Compose 就够;需要多机高可用、自动扩缩、故障自愈时才上 K8s。

核心对比

维度DockerKubernetes
定位容器运行时容器编排平台
作用范围单台机器一个集群(多台机器)
打包Dockerfile → 镜像复用镜像,定义 Pod/Deployment
自动扩缩无(Compose 也不支持)支持 HPA 按 CPU/自定义指标扩缩
故障自愈自动重启/重新调度故障 Pod
服务发现/负载均衡手动映射端口Service + Ingress + DNS
滚动发布/回滚手动内置 rollout 与回滚
学习成本高(网络、存储、RBAC 都要学)
适用场景本地开发、单机部署、小项目生产集群、微服务、多团队

什么时候用哪个

常见问题

Docker 和 Kubernetes 是替代关系吗?

不是。Docker 负责"跑容器",K8s 负责"编排容器",K8s 的节点上仍要用容器运行时(如 containerd)来跑容器。

Docker Compose 和 Kubernetes 有什么区别?

Compose 是单机多容器编排(一个 docker-compose.yml 起停一组服务),没有自动扩缩、自愈和跨节点调度;K8s 把这些能力扩展到整个集群。

学习 Kubernetes 至少要几台机器?

学习可以用 minikube 或 k3s 单机跑;生产高可用集群通常建议 3 个控制平面节点 + 至少 2 个工作节点,控制面用奇数节点保证 etcd 多数派。

来源

最后更新:2026-08-04