Devops & Docker


shop.ops@ele.me

Devops ?

Devops = 文化 + 过程 + 工具

History...

conflict


开发:我要改变!

运维:我要稳定!

开发:代码在我电脑上跑的好好的啊!

运维:为什么不能提前评估好资源呢!

QA : ...

...

NOW ...

Advantage


缩短开发上线周期

减少扯皮沟通成本

上线回滚风险可控

agile & cicd & devops ???


cicd == 'continuous integration and continuous delivery'

Docker ?

machine

  • 部署慢
  • 成本高
  • 资源浪费
  • 难于扩展

vm machine

  • 资源利用率高
  • 易扩展
  • Guest OS 消耗资源大
  • Dev和Ops矛盾未消除

docker machine

  • 启动速度更快
  • 环境一致,编排方便

Keyword

image 镜像,只读,环境某个时间点的状态,类比java的Class
container 容器,可读可写,是镜像实例化后的结果,类比java的Object
volume 数据卷,容器共享的部分,类比java的 static 变量,不会因为容器的消亡而消亡

Devops + Docker

依赖工具

gitlab 代码仓库
docker hub docker 仓库
gitlab-runner gitlab 运行器,是gitlab自带的工具,结合gitlab ci/cd
docker 容器技术

代码 / 流程 展示

Demo 层面?

问题 解决办法
runner机器和prod机器不会是同一台 runner只负责生成/记录image,开发自行部署image,如appos
部署机器不会只有一台 可以使用 Docker swarm 或者 Kubernetes 技术
容器删除和容器启动的时候会存在服务down机 docker stack(swarm工具) 会有 update 操作,可以蓝绿更新

More Gameplay With Docker

环境隔离

服务编排

  1. Docker Compose
  2. Docker Swarm
  3. Kubernetes

Docker Compose


服务编排就是把一些Docker容器按照一定的依赖关系启动起来

只支持单机运行

Docker Swarm & Kubernetes


都支持集群部署

Docker Swarm 是集成在Docker里面的,不需要额外的安装

等玩明白后再分享.....

summary

  1. 我对Devops的理解

  2. Docker在Devops中可以发挥什么样的作用

  3. Docker能力的简单布道

THANK YOU

问题?