Docker 综合总结

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 测试 → 镜像推送 → 部署

运维要点:
监控告警 → 日志收集 → 备份恢复 → 安全加固 → 性能优化

生产环境必须配置的项目:

  1. 日志上限(max-size / max-file)
  2. 资源限制(CPU/内存)
  3. 健康检查
  4. 重启策略(unless-stopped)
  5. 非 root 用户运行
  6. 只读文件系统
  7. 镜像漏洞扫描
  8. 集中式日志(Loki/ELK)
  9. Prometheus 监控
  10. 数据定期备份

四、排查思路总结

容器无法启动    → 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 命名空间

六、持续学习方向

  1. Kubernetes:容器编排的事实标准
  2. Service Mesh:Istio、Linkerd
  3. Serverless Container:AWS Fargate
  4. Wasm 容器:下一代轻量级容器
  5. eBPF:容器安全和可观测性新方向
  6. FinOps:容器成本优化和管理

面试要点总结

面试中 Docker 相关的核心考察点:

  • 基础概念:镜像、容器、仓库的区别
  • 实战能力:Dockerfile 编写、容器运维、排障
  • 架构理解:Docker 架构、网络模型、存储驱动
  • 生产经验:部署策略、监控告警、安全加固
  • 深度问题:容器原理(命名空间、cgroups)、性能优化

面试官最终极问题:用一句话概括 Docker 的价值?
答:Docker 通过容器化实现了跨环境一致的软件交付,从根本上解决了”在我机器上能跑”的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容