云端基于Docker的微服务与持续交付实践

云端基于Docker的微服务与持续交付实践笔记,是基于易立老师在阿里巴巴首届在线技术峰会上《云端基于Docker的微服务与持续交付实践》总结而出的。
本次主要讲了什么?

  • Docker Swarm
  • Docker Swarm mode
  • 微服务支持(Docker集群架构体系)
  • Docker的发展趋势和前沿成果

在Docker技术方面还是很佩服大牛的,所以赶紧写下笔记,追随大神的脚步。
阿里云资深专家易立,技术就不说了,他比其他直播间硬生生多讲了半个多点,于情于理还是万分感谢本次分享的(可惜devOps没时间讲了)。

总之,字里行间都是最前沿的研究成果,具体内容总结如下(原谅我没有写下阿里云Docker使用过程,大家可以购买支持嘛)。
(声明:阿里云承诺分享本次视频和ppt,无奈没找到,反正自己也要写学习笔记,在观看的同时顺便截屏,以下图片和大部分知识内容都来自Docker社区和阿里云资深专家易立,我只是总结梳理下Docker的知识体系~ ~)

Docker Compose 容器编排

Docker Compose allows you to define your multi-container application with all of its dependencies in a single file, then spin your application up in a single command.

Docker Compose其实是一个管多的工具,允许定义多个容器应用和依赖文件放置一个文件中,然后一条命令来启动它。

  • 优点:
    • 简单好用,便于开发
    • 镜像开发
    • 本地环境沙箱:开发,UT
    • 编排容器,存储和网络
  • 不足:
    • 面向开发和部署,不支持自动化运维
  • 功能
    • 一键部署:docker-compose up
    • 手动收缩:docker-compose scale wordpress=3

Docker Swarm 容器集群管理

Docker Swarm is native clustering for Docker. It turns a pool of Docker hosts into a single, virtual Docker host. Because Docker Swarm serves the standard Docker API, any tool that already communicates with a Docker daemon can use Swarm to transparently scale to multiple hosts.

Swarm’s swappable design provides a smooth out-of-box experience for most use cases, and allows large-scale production deployments to swap for more powerful backends, like Mesos.

Multiple Docker Engines==Swarm

  • 优点
    • 兼容标准的Docker API
    • 灵活,可插拔的容器,调度
  • 不足
    • 面向容器,缺少微服务支持

这里写图片描述

Containers as a Services (Caas 容器服务)

遵循Build—Ship—Run

  • Build:Development Environments
  • Ship:Secure Content&collaboration
  • Run:Deploy,Manager,scale

传统云金字塔:

(金字塔底) infrastructure As A Service—Platform As A Service(抽象级别过高)—Software As A Service(抽象级别过低) (金字塔顶)
这里写图片描述

容器服务定位

其实在金字塔的中间层做了分级,将Platform和Containers作为一个服务。实现了简洁性和灵活性间的完美平衡。
这里写图片描述

微服务架构

这里写图片描述

Build Once and Deploy Everwhere 利用容器实现持续集成和交付

这里写图片描述

从易立老师的这张图,可以看出Docker从开发,测试到最终生产环境,保证了应用的一致性。并且支持版本管理,快速上线和回滚。

完整的容器持续化交付流程

这里写图片描述
其中Jenkins是一把持续交付的利剑,附上文档链接https://hub.docker.com/r/jenkinsci/jenkins/

Docker 1.12 内置编排能力

The Best Way to Orchestrate Docker is Docker
docker峰会原话,其实剑指其他提供编排服务的工具。
这里写图片描述

Docker Swarm mode

Docker Swarm mode区别与Docker Swarm

Docker Engine 1.12 includes swarm mode for natively managing a cluster of Docker Engines called a Swarm. Use the Docker CLI to create a swarm, deploy application services to a swarm, and manage swarm behavior.
Docker Swarm是最新提出的,所以还不是很完善,但是如上他的介绍,可以定性的理解为Mesos之类的集群管理器。

这里写图片描述

服务servers

服务Servers是可以自动修复的,当集群中某个Engine失败时,可以自动修复。

复用已有的Docker Compose

这里写图片描述

吐槽

特意早早的坐在计算机前面等《首届阿里巴巴在线技术分享》盛会,并且早就关注了阿里云资深专家的《云端基于Docker的微服务与持续交付实践》。终于2016年7月19号8点开始了。我是7点30分坐等的,于是,在6000-10000人浏览(是实时浏览还是访问次数,怀疑是访问次数)时,发生了悲剧
视频很卡,而且不能选择画质,啊喂!
这里写图片描述
弹幕出BUG,啊喂!
这里写图片描述
索性直播间就关闭了弹幕功能(是关闭还是崩溃了?),啊喂!
这里写图片描述
忍不住吐槽一下,7点30分直播间试图播放阿里宣传片,结果卡到一半关闭,两三次播放,同样结局。到8点整,抢红包功能未准时,直到8点20分(我都忘记其抢红包的事了,强制刷新我的屏幕,点进去,已抢完= =)
八点多点弹幕系统无法使用。。。一直卡啊,还有BUG啊。。。我们是来测试你在线直播抗压性的么?!我们是来学技术膜拜大神的~哼!
还有奇葩的短线!好多次!一断线我就怀疑是我网络问题,去斗鱼看了下。。如此顺畅,看来有大神还是不够的,需要经验的锤炼和打磨!
这里写图片描述
好了,我是总结技术的。

心情终于平静了呢。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
前面我们已经部署好了一个Docker Swarm集群环境,接下来,我们就对Swarm集群的相关管理进行简单介绍。 集群调度策略 既然是集群,就是有一个调度策略,也就是该集群包含那么多子节点,我到底是设置一个什么样的策略来进行分配呢? 我们查看Docker官方文档可以看到Swarm的集群调度包含三种策略: To choose a ranking strategy, pass the  --strategy  flag and a strategy value to the  swarm manage  co

docker4dotnet #2 容器化主机 - 2016-07-21 14:07:47

.NET 猿自从认识了小鲸鱼,感觉功力大增。上篇 《docker4dotnet #1 前世今生世界你好》 中给大家介绍了如何在Windows上面配置Docker for Windows和Docker Tools for Visual Studio来使用docker协助.NET Core应用的开发,这篇我们来看看如何创建和管理容器化主机。 所谓容器化主机Dockerized Host,就是安装了docker engine的主机,可以使用docker工具进行管理。使用docker来协助开发,我们至少需要本地和

Oozie安装总结 - 2016-07-20 18:07:35

一、使用CM添加服务的方式安装Oozie 如果在创建Oozie数据库时失败,且提示数据库已存在,如下图,则可能是之前已经安装过Oozie,没有卸载干净,需要手动将Oozie服务器数据目录删掉(oozie/data部分),见图二                                                                            (图一)                                                              

kafka本地单机安装部署 - 2016-07-20 18:07:35

kafka是一种高吞吐量的分布式发布订阅消息系统,这几天要上kafka,只在其中的一个节点使用,结合具体的项目实践在此将kafka的本地安装部署流程记录下来与各位同仁分享交流。 准备工作: 上述的文件除了jdk以外均放在/usr/local/kafka目录下。 1、安装jdk,kafka的使用要用到jdk 首先检查有无jdk:java -version cd /usr/local/hadoop(本例中我是将jdk的安装包放到hadoop文件夹下,各位可以依据自己情况) http://www.oracle.

Swift 存储目录 - 2016-07-20 17:07:03

  在 Storage node 上运行着 Linux系统并 使用了 XFS文件系统 ,逻辑上使用一致性哈希算法将固定总数的 partition 映射到每个 Storage node 上,每个 Data 也使用同样的哈希算法映射到 Partition 上,其层次结构如下图所示: Figure1:Stoage node hierachy     以我们的一台 storage node sws51 为例,该 device 的文件路径挂载到 /srv/node/sdc ,目录结构如下所示: root@sws51
翻译:@胡杨(superhy199148@hotmail.com) @胥可(feitongxiaoke@gmail.com) 校对调整: 寒小阳 龙心尘 时间:2016年7月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51932536 http://blog.csdn.net/longxinchen_ml/article/details/51940065 说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已得到斯坦福大学课程@Rich

三分钟部署Laxcus大数据系统 - 2016-07-20 17:07:47

Laxcus是Laxcus大数据实验室历时五年,全体系自主设计研发的国内首套大数据管理系统。能够支撑百万台级计算机节点,提供EB量级存储和计算能力,兼容SQL和关系数据库。 最新的2.x版本已经全面覆盖和集成当前大数据主流技术和功能 ,并投入到国内多个超算项目中使用。Laxcus同时也保持着使用和部署的极简性,所有对计算机略有认识的人都可以很容易掌握它。下面演示在一台Linux计算机上部署Laxcus demo系统的过程。根据我们的测试,这个部署过程大约需要三分钟,或者您熟悉Linux系统 ,也许不需要这

Devstack多节点部署实验 - 2016-07-20 14:07:52

本文为博主翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou 这是个在多物理服务器上部署openstack例子: 1 先决条件Linux网络 1.1 最小化安装系统 你需要一个刚安装好的Linux系统。你可以直接下载最小化的Ubuntu版本,devstack会下载安装所有额外的依赖关系。同样也支持网络安装Fedora,Centos/RHEL.安装几个包用于引导程序配置。 apt -get install -y git sudo || yum install
0 说明 0.1 备注 建立文件夹(sparkdir、hadoop、java、scala、spark) 每台机器均有/usr/sparkdir /hadoop /hadoop - 2.7 .2 /java /jdk1 .8 .0 _91 /scala /scala - 2.11 .8 /spark /spark - 1.6 .1 -bin -without -hadoop . tgz 0.2 用户组、用户管理 资源:http://www.cnblogs.com/vincedotnet/p/ 4017574
Ubuntu16.04安装Hadoop2.6+Spark1.6,并安装python开发工具Jupyter notebook,通过pyspark测试一个实例,調通整个Spark+hadoop伪分布式开发环境。 主要内容:配置root用户,配置Hadoop,Spark环境变量,Hadoop伪分布式安装并测试实例,spark安装并通过Jupter notebook进行开发实例,配置Jupter notebook兼容Python2和python3双内核共存开发。 默认已经正确安装了JDK,并设置了JAVA_HOM