这一章里,把容器、编排和 IaC 看成“港口、电网和城市蓝图”。服务不只是写完就算完,还得能稳定装箱、发运、扩容、复制城市。
#Docker —— 标准集装箱
FROM node:22-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]Docker 解决的是:
- 环境一致性
- 打包标准化
- 交付统一
它擅长“装箱”,不擅长“全城调度”。
#Kubernetes —— 全港口调度中心
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3Kubernetes 解决的是:
- 多实例调度
- 自动恢复
- 服务发现
- 滚动发布
- 声明式期望状态管理
但它不适合:
- 很小的单体
- 团队没有集群运维能力
- 你只是想先把服务跑起来
#Terraform —— 城市蓝图生成器
resource "aws_instance" "web" {
ami = "ami-a0cfeed8"
instance_type = "t2.micro"
}Terraform 的关键是:
- 基础设施声明式管理
- 环境可复现
- 变更可审计
- plan / apply 工作流
这一章最容易混淆的边界:
| 技术 | 它不负责什么 |
|---|---|
| Docker | 不负责集群调度 |
| Kubernetes | 不负责云资源建模 |
| Terraform | 不负责运行时请求调度 |
核心关系:
Docker 负责“装箱”
Kubernetes 负责“调度集装箱”
Terraform 负责“把港口和道路都提前画出来”