Docker 与 K8s 题库
这部分你不一定是“平台 owner”,但你一定要准备到:
我知道容器化和编排到底解决什么问题,也知道服务上线、扩缩容、发布和资源隔离为什么要这样做。
一、Docker 是什么
标准回答
Docker 是一种容器化技术,用来把应用及其运行环境一起打包,保证在不同环境里运行一致。
你更好的说法
Docker 的核心价值不是“打包方便”,而是把应用、依赖、配置和运行环境收敛成统一交付单元,解决开发、测试、预发、线上环境不一致的问题。
二、镜像和容器的区别
- 镜像:静态模板
- 容器:镜像运行起来后的实例
三、为什么项目要容器化
你可以直接答
- 环境一致
- 发布更标准化
- 服务隔离更清晰
- 更方便做扩容、回滚和 CI/CD
结合你的项目怎么讲
像推广 ROI 线里 Go 消费者、PHP 后台、Kafka 消费服务,如果部署方式不统一,排查和发布成本会很高。容器化至少能把服务交付这层先标准化。
四、Docker 常见概念
- Image
- Container
- Volume
- Network
- Dockerfile
- Registry
五、Dockerfile 怎么理解
标准回答
Dockerfile 是镜像构建脚本,用来定义基础镜像、依赖安装、工作目录、复制文件、启动命令等。
你可以补的点
- 分层构建
- 尽量减少层数和无效缓存
- 多阶段构建
- 应用镜像尽量轻量
六、K8s 是什么
标准回答
Kubernetes 是容器编排平台,用来管理容器化应用的部署、扩缩容、服务发现、滚动发布、故障恢复和资源调度。
你更好的说法
Docker 解决的是“怎么打包和运行一个容器”,K8s 解决的是“很多容器和服务怎么稳定管理”。
七、K8s 核心对象
- Pod
- Deployment
- Service
- Ingress
- ConfigMap
- Secret
- Namespace
八、Pod 和容器是什么关系
Pod 是 K8s 调度的最小单位,里面可以包含一个或多个容器。一般一个主业务容器配一个 sidecar 或辅助容器。
九、Deployment 的作用
管理无状态服务的副本数、滚动更新和回滚。
十、Service 和 Ingress 区别
- Service:集群内部服务发现和负载均衡
- Ingress:对外统一入口和路由规则
十一、为什么 K8s 适合微服务
微服务天然会带来大量服务实例、不同版本、不同扩容需求和发布动作。K8s 的价值就在于把调度、服务发现、滚动发布、健康检查、扩缩容这些能力统一收敛。
十二、滚动发布和回滚怎么理解
- 滚动发布:逐步替换旧版本,保证服务不中断
- 回滚:新版本有问题时快速恢复到旧版本
十三、健康检查为什么重要
- livenessProbe
- readinessProbe
readiness 负责能不能接流量,liveness 负责是不是需要重启。
十四、CI/CD 怎么讲
一般链路
- 代码提交
- 自动测试
- 构建镜像
- 推送镜像仓库
- 更新 Deployment
- 健康检查
- 发布完成或回滚
十五、结合你的项目怎么说
海外业务平台
- 支付、订阅、后台和鉴定链路都比较重,发布要更关注稳定性
- 如果服务化以后,适合通过容器标准化部署
推广 ROI 平台
- Go 消费者、PHP 后台、报表服务、回传服务天然适合拆成不同容器
- 不同服务副本数和资源需求不同,K8s 更适合统一管理
十六、技术总监最容易问的 3 个点
1. Docker 解决什么问题
解决环境一致性和交付标准化问题。
2. K8s 解决什么问题
解决多服务部署、扩缩容、服务发现、滚动发布和故障恢复问题。
3. 你项目里为什么需要它
因为多服务系统一旦没有标准化部署和编排,发布、回滚、扩缩容和排障都会很痛苦。
十七、你最适合背的总结句
我对 Docker 和 K8s 的理解,重点不是平台术语,而是它们分别解决交付标准化和多服务治理问题。前者让应用运行环境一致,后者让多服务的部署、扩缩容、服务发现和发布回滚更标准、更稳定。