
Docker容器化技术实战特训营:从入门到云原生专家
课程总览与教学理念 本课程专为希望掌握现代化应用交付标准的开发者和运维人员设计。我们将通过一个多语言微服务电商系统的容器化改造实战,带领学员深入理解Docker的核心原理。课程拒绝照本宣科地罗列命令,而是注重**“底层原理”与“最佳实践”**的结合。我们将深入探讨镜像的分层存储机制、容器的网络模型、数据持久化策略...
课程总览与教学理念
本课程专为希望掌握现代化应用交付标准的开发者和运维人员设计。我们将通过一个多语言微服务电商系统的容器化改造实战,带领学员深入理解Docker的核心原理。
课程拒绝照本宣科地罗列命令,而是注重**“底层原理”与“最佳实践”**的结合。我们将深入探讨镜像的分层存储机制、容器的网络模型、数据持久化策略以及如何编写生产级别的Dockerfile。课程旨在培养学员的“容器化思维”,确保学员在课程结束后,能够独立将复杂的单体或微服务应用进行容器化封装,并具备基本的编排与故障排查能力。
学习效果保障与学员参与机制
为了确保每位学员都能真正掌握容器技术,我们沿用“全栈精英”系列的保障机制:
课前准备包:
环境预装指南: 提供Windows(WSL2)/Mac/Linux下的Docker Desktop及Docker Engine安装视频,确保开课前学员的Docker Daemon已正常运行。
Linux基础速查: 提供一份常用Shell命令速查表(如ls, ps, cat, grep),因为Docker操作离不开Linux命令行。
过程驱动学习:
“破坏-修复”式教学: 讲师故意构建一个无法启动或无法联网的容器(如端口冲突、环境变量缺失),引导学员通过docker logs和docker inspect排查问题,培养Debug能力。
镜像瘦身挑战: 在讲解Dockerfile时,举办“镜像瘦身大赛”,看谁能将同一个应用的镜像体积优化到最小(例如从1GB优化到100MB)。
每日配置审查: 随机抽取学员编写的Dockerfile或docker-compose.yml,分析其安全性、可读性和构建效率。
课后巩固与支持:
专属技术社群: 讲师驻场答疑,分享云原生最新资讯。
“云原生工匠”作业: 课后布置进阶任务,例如“为你的容器添加健康检查(Healthcheck)”或“搭建一个私有的Docker Registry”。
全套实战资料: 提供所有案例的源代码、完整的配置文件库和命令备忘录。
课程核心项目:PolyShop —— 多语言微服务电商系统
为了模拟真实企业环境,我们将构建一个由不同技术栈组成的微服务系统:
Frontend: Vue.js (Nginx托管)
Product Service: Python (Flask)
Order Service: Java (Spring Boot)
Database: PostgreSQL & Redis
Infrastructure: Docker & Docker Compose
详细课程安排 (3天)
第一天:揭开容器面纱,掌握核心操作 (Day 1)
上午 (9:00 - 12:00)
模块一:容器技术概论与环境终检 (1h)
历史演进: 从物理机 -> 虚拟机(VM) -> 容器(Container)的演变,通过对比图理解进程级隔离与操作系统级虚拟化的区别。
核心架构: 剖析Docker Client, Daemon, Registry, Image, Container五大核心组件及其交互流程。
环境验证: 运行hello-world,验证环境配置,解决WSL2或权限等常见安装问题。
模块二:镜像与容器的生命周期管理 (2h)
启动与交互: run (前台vs后台), exec (进入容器), stop/start/restart。实战:运行一个Nginx容器并修改其HTML主页。
查看与调试: 掌握ps (查看状态), logs (查看日志), top (进程监控), stats (资源统计)。
清理与维护: rm (删除容器), rmi (删除镜像), prune (一键清理无用资源)。
思考题: 为什么修改了容器里的文件,删除容器后文件就没了?引出“写时复制(CoW)”概念。
下午 (14:00 - 17:00)
模块三:深入镜像原理 (1.5h)
联合文件系统 (UnionFS): 图解镜像的分层结构(Layer),理解只读层与读写层的关系。
获取与推送: 使用Docker Hub搜索官方镜像,配置国内镜像加速器。
镜像制作初体验: 使用docker commit(虽然不推荐,但用于理解原理)将修改过的Nginx容器保存为新镜像。
模块四:Dockerfile 最佳实践实战 (1.5h)
指令详解: FROM, RUN, COPY vs ADD, CMD vs ENTRYPOINT, WORKDIR, ENV。
构建上下文 (Context): 理解为什么COPY ../file会失败,掌握.dockerignore的作用。
实战演练:
编写一个Python Flask应用的Dockerfile。
挑战: 修正一个故意写得很烂的Dockerfile(多条RUN导致层数过多、包含临时文件等)。
答疑与总结 (17:00 - 17:30)
第二天:编排的艺术,构建多容器应用 (Day 2)
上午 (9:00 - 12:00)
模块一:进阶镜像构建技巧 (1.5h)
多阶段构建 (Multi-stage Builds): 彻底解决编译环境与运行环境分离的问题。
实战: 为Java Spring Boot应用编写Dockerfile,第一阶段Maven编译,第二阶段JRE运行,将镜像体积缩小80%。
镜像优化策略: 选择合适的基础镜像(Alpine vs Debian-slim vs Distroless),利用缓存机制加速构建。
模块二:数据持久化与存储管理 (1.5h)
数据易失性痛点: 演示删除数据库容器导致数据丢失的“灾难现场”。
Volume (卷): Docker管理的卷,最安全的持久化方式。
Bind Mount (挂载): 将宿主机目录映射到容器,方便开发调试(代码热更新)。
实战: 为PostgreSQL数据库配置Volume持久化数据,为Nginx配置Bind Mount实时修改网页内容。
下午 (14:00 - 17:00)
模块三:容器网络互联 (1.5h)
网络模型详解: Bridge(默认网桥), Host(共享主机网络), None。
容器间通信: 为什么写IP地址是不靠谱的?使用Docker内置DNS通过容器名访问。
端口映射: 深入理解-p host_port:container_port的原理(iptables/NAT)。
实战: 手动创建一个自定义网络,让Python容器能够通过ping postgres访问数据库容器。
模块四:Docker Compose 单机编排 (1.5h)
从命令到配置: 为什么要用Compose?将复杂的docker run命令转化为docker-compose.yml文件。
核心配置: services, networks, volumes, environment, depends_on, restart策略。
实战项目整合: 编写docker-compose.yml,一键启动包含Frontend, Product Service, Order Service, Redis, DB的完整电商系统。
答疑与总结 (17:00 - 17:30)
第三天:生产级运维与DevOps集成 (Day 3)
上午 (9:00 - 12:00)
模块一:生产环境配置与安全 (1.5h)
环境变量管理: 使用.env文件管理敏感信息(数据库密码、API Key),避免硬编码。
资源限制: 使用--cpus和--memory限制容器资源,防止单个容器耗尽宿主机资源(OOM)。
非Root用户运行: 在Dockerfile中创建并切换用户,提升容器安全性。
模块二:Docker镜像仓库管理 (1.5h)
公有仓库: 将构建好的镜像Push到Docker Hub。
私有仓库搭建: 使用registry镜像搭建企业内部私有仓库,并配置HTTPS和Basic Auth。
Harbor简介: 简单介绍企业级镜像仓库Harbor的功能(扫描、复制、RBAC)。
下午 (14:00 - 17:00)
模块三:CI/CD流水线集成 (1.5h)
DevOps理念: 容器如何成为DevOps的核心载体(不可变基础设施)。
GitHub Actions实战:
编写Workflow:代码提交 -> 自动构建Docker镜像 -> 自动运行测试 -> 推送到Docker Hub。
演示:修改前端代码,Git Push后,观察流水线自动完成构建和发布。
模块四:迈向集群与云原生 (1.5h)
单机 vs 集群: Docker Compose的局限性。
Kubernetes (K8s) 极速概览:
概念引入:Pod, Service, Deployment, ReplicaSet。
演示(讲师演示):使用Minikube或Kind,将之前Docker Compose定义的电商应用部署到本地K8s集群中,展示自动扩缩容和自愈能力。
注:本模块旨在开阔眼界,为后续K8s专项课程做铺垫。
课程总结与学员成果展示 (17:00 - 17:30)
学员成果展示方案
学员需在课程结束后一周内,完成并展示:
一个GitHub仓库: 包含完整的“PolyShop”电商系统代码,必须包含:
优化后的Dockerfile(多阶段构建,极简体积)。
结构清晰的docker-compose.yml。
.github/workflows 自动化构建脚本。
一次5分钟的现场/录屏Demo:
一键启动: 演示docker-compose up -d,系统在1分钟内完全启动。
功能演示: 访问前端页面,进行下单操作,数据成功写入数据库。
运维演示: 删掉一个正在运行的后端服务容器,演示Compose如何检测或手动重启它;展示数据持久化(删除DB容器后重建,数据依然存在)。
架构讲解: 打开构建后的镜像列表,解释每一层的作用以及为什么这样构建。
Comments (0)