| 破冰,培训整体介绍,团队分组
 | 参训人员互相熟悉,并分成4个小组。讲师对培训进行整体介绍。 | 
| DevOps和持续交付概述
 | 
DevOps的价值,知识体系;通过案例分享了解实现DevOps的过程和收益。持续交付所涉及的方法和实践,增量式开发,按故事交付,快速迭代,持续集成,持续部署。 | 
| Docker技术概述 |  | 
| 演示:基于容器的DevOps发布流水线整体场景
 | 
使用Docker和容器技术构建持续交付流水线场景演示:容器化本地开发环境,容器化主机,容器编排平台Docker Swarm,私有镜像仓库,GitLab + Jenkins持续交付流水线;并在以上环境中完成一个微服务架构应用从代码到CI/CD,再到测试和生产环境的自动化发布流程。 | 
| 动手实验:搭建基础环境并发布至测试环境
 | 
各学员按照讲师提供的操作手册对docker基本操作进行熟悉。同时使用docker搭建gitlab,  jenkins和registry基础环境,完成项目代码初始化,jenkins节点配置和测试环境的自动化部署。 | 
| 容器编排平台概述
 | 容器编排平台的特点和价值,如何选择适合自己的编排平台(Docker  Swarm/k8s/Apache Mesos/Service Fabric) | 
| 持续交付工具链介绍
 | 构建持续交付所需要的工具,以及如何使用这些工具支持迭代开发,单元测试,代码覆盖率,自动化构建,自动化部署,自动化集成测试以及生产环境监控 | 
| 演示:Docker  Swarm编排平台的主要使用场景
 | 
容器编排平台Docker Swarm的搭建,服务部署和扩缩容;将Docker Swarm环境集成到Jenkins发布流水线 。 | 
| 动手实验:使用容器化DevOps流水线开发,测试和发布容器化应用
 | 各学员在教师的指导下,按照操作手册,完成GitLab项目触发器配置,Jenkins作业配置,Docker  Swarm集群初始化和自动化部署;从而完成整条DevOps发布流水线的配置。 | 
| 动手实验:使用持续交付流水线快速发布产品
 | 在以上环境中完成特性分支建立,代码编写和签入,Pull  Request提交,自动化构建,容器打包,容器上传私有镜像仓库,发布容器到测试(docker machine)和生产环境(docker  swarm集群) | 
| 容器数据持久化 &  跨主机网络解决方案
 | 
深入了解容器CoW机制及其影响,数据卷的主要使用技巧,以及使用共享数据卷实现跨主机容器迁移。深入了解容器网络工作机制,使用overlay网络实现跨主机容器网络。 | 
| 容器日志机制和监控解决方案
 | 深入了解容器日志机制和监控方式,使用ELK搭建企业级容器集群监控平台,实现主机,容器和应用三层监控机制。 | 
| 演示:生产机容器运行环境改造
 | 
在Docker Swarm环境中增加共享卷和overlay网络支持,并实现集群环境下的容器在线迁移;完成ELK监控服务搭建并在Docker Swarm环境中部署监控数据采集器,配置Kibana仪表盘完成容器集群环境的监控。 | 
| 动手实验:改进DevOps流水线,实现数据持久化(容器迁移),跨主机网络(微服务集群),多主机监控和Pipeline  as Code.
 | 
在讲师的指导下,按照操作手册在环境中添加数据持续久化,跨主机网络和监控系统。莆赵谏�产环境中使用Docker作为容器化DevOps解决方案的能力。改造当前流水线使用Pipeline as Code方式。 | 
| 动手实验内容 | 1.实验环境获取:自助完成基于Azure云平台的实验环境创建和获取。 2.  基础环境搭建:使用docker-compose 完成gitlab, jenkins, registry和cAdvisor的容器环境搭建。
 3.  导入实验项目代码到gitlab:完成gitlab初始化并从GitHub导入实验项目代码。
 4.  完成Jenkins初始化配置:完成访问凭据,远程服务器ssh连接和Jenkins构建代理节点等初始化配置。
 在Jenkins中搭建CI/CD流水线完成到测试环境的部署:使用Jenkins  Job的方式完成从获取代码,编译代码到测试环境部署的过程
 | 
| 动手实验内容 | 1. 完成Docker  Swarm集群的搭建和初始化:使用ssh登录个节点主机完成swarm join操作 2. 学习Docker  Swarm的基本操作,管理节点,管理服务,服务扩缩容等等。
 3. 配置Jenkins通过远程方式控制Swarm集群
 4. 配置Jenkins  Job完成对Swarm集群的部署和持续更新
 | 
| 动手实验内容 | 1. 改造Jenkins使用Pipeline as Code的方式 2.  完成ELK环境搭建:使用docker-compose完成elastic search, logstash, kibana容器环境搭建
 3.  在测试环境中部署logspout和dockbeat以便收集监控数据
 4.  在Swarm集群中安装共享数据卷驱动,并使用global方式启动dockbeat服务以便完成集群各节点的监控数据收集
 5.  配置Kibana完成容器环境的统一监控仪表盘配置
 |