Download presentation
Presentation is loading. Please wait.
1
基于Docker的分布式服务研发实践 天云软件 葛林
2
个人介绍 葛林 北京天云融创软件技术有限公司 天云软件平台研发工程师
目前专注于云管理平台,以及基于Docker的自动化部署、调度、集群的相关研发工作 北京天云融创软件技术有限公司
3
Agenda SkyForm简介 当SkyForm遇上Docker 实施CI/CD之后 用Docker解决实际问题
4
SkyForm简介
5
各服务间的交互关系
6
来自研发与QA的心声 简化配置,一次配置,多处复用 统一研发与测试的环境 环境一键搭建 部署一键完成 随时发布、随时部署
7
Agenda SkyForm简介 当SkyForm遇上Docker 实施CI/CD之后 用Docker解决实际问题
8
将应用装进容器
9
微服务化
10
基于Docker的CI/CD SVN Develop Build Ship Run release trunk branch
Build Job#1 Skycloud.com/mcloud trunk Develop Env Build Job#2 Skycloud.com/mysql branch Build Job#3 QA Env Skycloud.com/Alarm Event SVN
11
Docker Compose Docker Compose是一个定义和部署多个容器的简单、高效的工具,它使你使用一条简单的命令就可以完成多个容器的部署。Docker Compose大大简化了多容器的部署过程,避免了在不同环境运行多个重复步骤所带来的错误可能,使多容器移植变得简单可控。
12
docker-compose.yml web: image: "nginx" net: "host" ports: - "80:80"
- "8080:8080" container_name: nginx volumes: - /home/skycloud/config/:/etc/nginx/conf.d/ command: /bin/sh -c "service nginx start && tail -f /var/log/nginx/access.log" sas: image: " :5000/skyform-sas" - "8089:8089" container_name: skyform-sas command: /bin/sh -c "service skyform-sas start && tail -f /opt/skyform/skyform-sas/log/sas.log" mcloud: image: " :5000/mcloud" - "9527:9527" - "8980:8980" container_name: mcloud docker-compose.yml
13
Agenda SkyForm简介 当SkyForm遇上Docker 实施CI/CD之后 用Docker解决实际问题
14
遇到的问题和需求 QA: 测试还是使用同一套环境,存在资源冲突; 自己搭建环境,对Docker不熟,需要时间学习;
研发: 需要自己先安装Docker环境,才能使用镜像; 个别文件修改后,镜像里的文件能否替换; 新需求开发完后,在这套环境里怎样进行测试 能否Debug
15
Agenda SkyForm简介 当SkyForm遇上Docker 实施CI/CD之后 用Docker解决实际问题
16
满足QA的需求 标准化 统一Compose定义文件 模板化 将配置好的环境镜像部署云端 自动化 将执行命令做成脚本 部署自动化 测试敏捷化
随时发起构建 随时申请测试资源 一键搭建测试环境
17
满足研发的需求 R1: 研发环境一键搭建 R2: 文件替换 R3: 本地测试 R4: 对原有的开发调试习惯尽可能的不做改动
18
研发环境搭建: 提供常用环境的镜像:Nginx、MySQL、Rabbitmq、Tomcat、keystone… 环境统一: 通过办公云环境申请资源,从docker本地仓库拉取镜像 文件替换与调试:
19
单个文件: 执行命令,将文件拷贝进容器目录 docker exec -i <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/ 目录: 使用卷,挂载到容器。 后端代码: IDE远程Debug
20
现行方式的不足 只能部署在一台机器上 无法有效利用云平台中的计算资源 无法满足QA对性能测试环境的需求 如何解决?——集群!
21
Swarm简介 基于Docker的原生集群管理工具,使用标准Docker API
对外以Docker API接口呈现,这样带来的好处是,如果现有系统使用Docker Engine,则可以平滑将Docker Engine切到Swarm上,无需改动现有系统。 插件化机制,Swarm中的各个模块都抽象出了api,可以根据自己一些特点进行定制实现。
22
Swarm结构
23
Compose+Swarm
24
已填过的坑 基础镜像 选择(busybox > debian > Ubuntu > centos) 中文的支持 镜像
不要在基础镜像中继续升级 想办法使得镜像尽可能的小 构建命令组合使用减少镜像的层数 尽量不要在容器中开启SSH 应用拆分 职责单一原则 尽量在高版本的内核中使用docker
25
总结 推动了天云SkyForm的演进,面向微服务 解决了我们在研发生产过程中遇到的问题 改进了分布式服务研发的方式与方法
使得整个研发活动变得更加敏捷、高效 采用Swarm的集群方式能够很好的满足我们对集群的需求。并使得前期的技术积累可以平滑过渡到集群方式中来
Similar presentations