目录
1. Docker 核心概念
1.1 镜像(Image)
- 只读模板,包含代码、依赖、环境、配置
- 分层存储,复用性强,体积小
- 来自:Dockerfile 构建、官方仓库、私有仓库
1.2 容器(Container)
- 镜像运行的实例,独立隔离环境
- 一个镜像可启动 N 个容器
- 容器 = 应用 + 独立进程空间 + 独立网络
1.3 数据卷(Volume)
- 解决容器重启数据丢失问题
- 宿主机与容器共享目录
- 用于:MySQL 数据、上传文件、日志、配置文件
1.4 网络(Network)
- 容器间互相通信的虚拟网络
- 常用:bridge 模式
- 容器名直接作为域名访问(如:redis:6379)
1.5 面试必背
Docker 核心价值:环境统一、一次构建处处运行、隔离性强、部署极快
2. Dockerfile 编写与多阶段构建
2.1 Dockerfile 规范
- FROM:基础镜像(python:3.9-slim 最常用)
- WORKDIR:工作目录
- COPY / ADD:复制代码
- RUN:安装依赖
- ENV:环境变量
- EXPOSE:暴露端口
- CMD / ENTRYPOINT:启动命令
2.2 最佳实践
- 选用 slim / alpine 轻量镜像
- 合并 RUN 指令减少层数
- .dockerignore 忽略无用文件
- 不要运行 root 权限
- 日志输出到 stdout
2.3 多阶段构建(重点)
- 第一阶段:安装依赖、打包、编译
- 第二阶段:只复制运行必需文件
- 优点:最终镜像体积缩小 80%、安全、无冗余
- 适用于:Python、Java、Go、前端项目
3. Docker Compose 容器编排
3.1 作用
用一个 yaml 文件一键启动、停止、重启整个项目栈,无需手动启动多个容器。
3.2 标准项目编排(Python 全栈)
- Python 后端(Django/FastAPI)
- MySQL 数据库
- Redis 缓存/消息队列
- Nginx 代理
- Celery Worker
- Celery Beat
3.3 核心优势
- 开发/测试/生产环境完全一致
- 一键部署,无环境差异
- 一键扩容、日志聚合
- 适合中小项目、单体项目、微服务启动
3.4 常用命令
- docker-compose up -d 后台启动
- docker-compose down 停止并删除
- docker-compose logs 查看日志
- docker-compose restart 重启服务
4. Nginx 核心作用
4.1 反向代理
- 接收用户请求 → 转发给后端容器
- 隐藏后端真实地址,提高安全
- 示例:/api/* → 转发到 Python 后端
4.2 负载均衡
- 多个后端实例分摊流量
- 策略:轮询、IP 哈希、权重
- 提高并发能力与可用性
4.3 HTTPS/SSL 证书部署
- 配置 ssl_certificate
- 强制 HTTP 跳转到 HTTPS
- 支持 TLS1.2/1.3,提高安全与 SEO
4.4 静态资源服务
- Vue 打包后的 dist 目录
- 图片、JS、CSS
- 高并发、高缓存、不占用后端资源
4.5 限流、缓存、跨域
- 限流:limit_req 防刷接口
- 缓存:expires 缓存静态资源
- 跨域:add_header Access-Control-*
- gzip 压缩
5. 高可用部署
5.1 自启动与健康检查
- restart: always 容器崩溃自动重启
- healthcheck 健康检查
- 不健康自动重建,保证服务可用
5.2 日志切割
- 容器日志会无限增大
- 使用 logrotate 切割
- 配置大小、天数、压缩、删除
5.3 数据备份与恢复
- MySQL 定时备份
- Redis 持久化备份
- 重要文件异地备份
- 可快速恢复,避免数据丢失
5.4 监控告警
- CPU、内存、磁盘监控
- 接口可用性监控
- 队列长度、连接数监控
- 异常邮件/钉钉告警
6. 面试高频扩展知识点
6.1 Docker 与虚拟机区别
- Docker:轻量、秒级启动、共享内核
- 虚拟机:重量级、分钟级、独立内核
6.2 容器数据持久化
- 容器本身不存数据,必须挂数据卷
- MySQL、Redis、上传文件必须挂载
6.3 容器网络模式
- bridge:默认,独立网络
- host:共享宿主机网络
- none:无网络
6.4 生产环境部署规范
- Nginx → Docker → 后端服务
- SSL 证书
- 防火墙只开放 80/443
- 非 root 运行
- 日志、备份、监控齐全
6.5 面试必背总结
Docker:环境统一、快速部署、隔离、可移植 Compose:一键编排整个技术栈 Nginx:反向代理、负载均衡、HTTPS、静态资源、安全网关 高可用:自启动、健康检查、备份、日志、监控
评论区