Docker 综合总结
核心概念回顾
Docker 彻底改变了软件的构建、交付和运行方式。下面是 Docker 知识体系的核心要点。
一、基础架构
┌─────────────┐
│ Docker CLI │ ← 用户交互
└──────┬──────┘
│ REST API
┌──────▼──────┐
│ Docker Daemon│ ← 核心守护进程
└──────┬──────┘
│
┌──────▼───────────────────┐
│ containerd (容器运行时) │
├──────────────────────────┤
│ runc (OCI 运行时) │
├──────────────────────────┤
│ 容器 ← 镜像 ← Dockerfile │
└──────────────────────────┘
二、核心知识点模块
1. 镜像层
- Dockerfile 指令:FROM, RUN, COPY, CMD, ENTRYPOINT
- 多阶段构建:Builder Pattern
- 镜像分层和缓存机制
- Buildx 多架构构建
- 镜像仓库和镜像分发
2. 容器层
- 容器生命周期:create → start → stop → rm
- 资源限制:CPU、内存、磁盘 I/O
- 运行时安全:非 root、只读、capabilities
- 调试技巧:docker exec、nsenter、logs
- 健康检查和重启策略
3. 网络层
- 网络模式:bridge、host、overlay、macvlan
- 端口映射和负载均衡
- DNS 和服务发现
- 容器间通信:自定义网络
- 网络故障排查
4. 存储层
- Volume vs Bind Mount
- 数据持久化和备份
- 存储驱动(overlay2)
- tmpfs 临时文件系统
- 存储性能优化
5. 编排层
- Docker Compose:多容器应用
- Docker Swarm:集群管理
- 服务发现和负载均衡
- 滚动更新和蓝绿部署
- 自动扩缩容
三、生产实践总结
开发流程:
代码 → Dockerfile → 镜像构建 → CI 测试 → 镜像推送 → 部署
运维要点:
监控告警 → 日志收集 → 备份恢复 → 安全加固 → 性能优化
生产环境必须配置的项目:
- 日志上限(max-size / max-file)
- 资源限制(CPU/内存)
- 健康检查
- 重启策略(unless-stopped)
- 非 root 用户运行
- 只读文件系统
- 镜像漏洞扫描
- 集中式日志(Loki/ELK)
- Prometheus 监控
- 数据定期备份
四、排查思路总结
容器无法启动 → docker logs → docker inspect → docker run --entrypoint
容器网络不通 → 容器内 curl/ping → 网络模式 → iptables
容器资源过高 → docker stats → 容器内 top → profiling
构建失败 → --progress=plain → 分段构建 → --no-cache
OOM 问题 → docker inspect 确认 → 检查内存限制 → 优化应用
挂载不生效 → docker inspect Mounts → 权限 → 路径
五、面试高频知识点
| 知识点 | 关键点 |
|---|---|
| 镜像 vs 容器 | 镜像是只读模板,容器是运行实例 |
| CMD vs ENTRYPOINT | CMD 可覆盖,ENTRYPOINT 不可覆盖 |
| COPY vs ADD | COPY 更简洁,ADD 支持自动解压 |
| ARG vs ENV | ARG 构建时,ENV 运行时 |
| Volume vs Bind Mount | Volume 由 Docker 管理,Bind 由用户管理 |
| Bridge vs Host | Bridge 隔离性好,Host 性能好 |
| Swarm vs K8s | Swarm 简单,K8s 强大 |
| overlay2 vs aufs | overlay2 是现代推荐方案 |
| docker exec vs nsenter | exec 容器内,nsenter 命名空间 |
六、持续学习方向
- Kubernetes:容器编排的事实标准
- Service Mesh:Istio、Linkerd
- Serverless Container:AWS Fargate
- Wasm 容器:下一代轻量级容器
- eBPF:容器安全和可观测性新方向
- FinOps:容器成本优化和管理
面试要点总结
面试中 Docker 相关的核心考察点:
- 基础概念:镜像、容器、仓库的区别
- 实战能力:Dockerfile 编写、容器运维、排障
- 架构理解:Docker 架构、网络模型、存储驱动
- 生产经验:部署策略、监控告警、安全加固
- 深度问题:容器原理(命名空间、cgroups)、性能优化
面试官最终极问题:用一句话概括 Docker 的价值?
答:Docker 通过容器化实现了跨环境一致的软件交付,从根本上解决了”在我机器上能跑”的问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


暂无评论内容