# 与 Kubernetes 的比较与协作

URL: https://caijiao.org/docker/advanced/k8s-compare
Source: docs/docker/advanced/k8s-compare.md
Description: 本章节对比 Docker 与 Kubernetes 的异同点，并讲解两者的协作方式，包括容器管理、编排、服务发现、部署流程和最佳实践，帮助理解容器生态系统中的应用与运维关系。

Docker 和 Kubernetes 在容器化生态中各自承担不同角色，理解它们的差异与协作方式有助于高效部署和管理应用。

## 1. Docker 与 Kubernetes 的角色

- **Docker**：
  - 主要用于构建、打包和运行单个容器
  - 提供镜像管理、容器生命周期管理、网络与存储接口
- **Kubernetes (K8s)**：
  - 容器编排平台，管理大量容器的部署、扩展与调度
  - 提供服务发现、负载均衡、自动扩缩容和健康检查

## 2. 功能对比

| 功能 | Docker | Kubernetes |
|------|--------|------------|
| 容器运行 | 单个或少量容器 | 大规模容器集群调度 |
| 编排 | Docker Compose 可简单编排 | 完整编排与自动化管理 |
| 网络 | 内置桥接、覆盖网络 | Pod 网络、服务网络、Ingress |
| 存储 | 卷与绑定挂载 | PersistentVolume、StorageClass |
| 弹性与扩缩容 | 手动管理 | 自动扩缩容、滚动更新 |
| 健康检查 | 简单容器健康检查 | LivenessProbe、ReadinessProbe |

## 3. Docker 与 Kubernetes 的协作

- **容器镜像**：
  - Docker 构建镜像，推送到 Registry
  - Kubernetes 从 Registry 拉取镜像部署到集群

- **本地开发与测试**：
  - Docker Compose 用于本地环境快速部署
  - K8s 集群用于生产环境统一管理

- **持续集成/持续部署 (CI/CD)**：
  - Docker 镜像构建 → 推送 Registry
  - K8s 部署更新，利用 Deployment 滚动升级

- **日志与监控**：
  - Docker 日志可集中采集
  - K8s 利用 Prometheus、ELK 等实现集群级监控

## 4. 协作最佳实践

- 本地开发使用 Docker Compose 模拟微服务
- 构建镜像时遵循最小化和安全原则
- 利用 Kubernetes 管理生产环境，确保高可用与自动扩缩容
- 集成 CI/CD 流程，实现从 Docker 镜像到 K8s 部署自动化
- 监控和日志集中管理，快速响应集群异常

---

通过理解 Docker 与 Kubernetes 的差异及协作方式，可以在开发与生产环境中高效管理容器化应用，实现稳定、可扩展的微服务架构。
