Docker On Gaia——腾讯Docker管理解决方案

要问2015年什么最火,耐人寻味的股票走势?黄晓明baby领证?Apple Watch 销量会有多好?我无法准确回答你,每个人心中都有自己的答案。不过要问技术领域2015什么最火,那“Docker”一定是当仁不让,这一年Docker又是融资,又是收购,又是办大会。它被爱好者冠以云计算新星、下一代虚拟机等称号,可见大家对其的期望之高。

小米雷布斯曾说过,“站在风口上,猪都能飞起来”。Gaia虽不是“猪”,但也着实借着“Docker”这股春风在腾讯内外,尤其运维和开发圈子里火了一把。Docker On Gaia项目自启动以来,受到了多方关注,目前已稳定运行半年多,正式接入了Lhotse、Hermes等多个在线业务,其他合作业务也在有条不紊的进行当中。

为了更好地服务于Gaia用户,也为了让更多的小伙伴无门槛地使用上Docker,在这2015的春天,Gaia团队又推出了“Docker开发云”,从而打通了开发、测试、部署、维护的Docker一条龙服务。也再次印证了Container大会上那句“Goodbye DevOps,Hello ContainerOps”。

一、 Docker大潮来袭,变革势在必行

1. 什么是Docker呢?

Docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Payload)装在Container内,通过Linux Container技术的包装将App变成一种标准化的、可移植的、自管理的组件,这种组件经过开发、调试、运行,最终非常方便和一致地运行在production环境下。

2. Docker带来了什么? Docker的火爆,引起很多同事的跃跃欲试,包括开发,测试,运维人员,根本原因还是Docker给这些角色都可以带来很多的好处。图1是一个简单的软件workflow,按照这个workflow,我们看下Docker可以带来的好处。

图 1 软件workflow 开发环节:可以简单快速的构建起开发环境,并保持统一的开发环境。比如对于公司内基于PHP的开发,所有开发人员的开发环境都可以从公司私有的registry中(Docker.oa.com)获取并运行。 构建环节:开发向测试交付版本时,再也不需要写繁琐的部署文档了,更重要的是,测试和开发可以保持一致的环境,避免了测试过程中由于环境不一致引入的“额外功”,也减少了测试人员部署系统的时间开销。 部署环节:从前运维人员拿到的一般是程序发布包,有了Docker之后,可以将应用和所有依赖在容器级别上打包,并可以做到真正的秒级部署。 管理环节:由于Docker方式的快速部署、启动特性,在scaling具有原来方式无可比拟的优势。

3. Docker对于开发者的价值 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规模化、自动化、异构化的部署成为可能甚至是轻松简单的事情;而对于开发者来说,Docker提供了一种开发环境的管理方法,包括映像、构建、共享等功能。 我们先看看程序员在搭建开发环境时遇到的一些问题: 软件安装麻烦,公司内部的标准os主要是运营os,没有针对开发环境做定制化。开发人员在初始化环境时,需要安装诸多依赖,造成团队内部每个人的环境都可能有很大不同。而且一般开发人员没有root,安装一个nginx或者是mysql都得自己下载编译安装 权限问题,没有root,一些软件无法运行,例如dnsmasq; 没有root,无法修改hosts,无法netstat -nptl,无法tcpdump,无法iptable 隔离性差,例如不同的开发人员如果在同一台主机环境下共享开发,虽然是用户隔离,但端口如果不规范可能会冲突;同一个Mysql如果权限管理不好很有可能误删别人的数据 可移植性差,例如和生产环境不一致,开发人员之间也无法共享;更严重的情况是当有新人入职时,通常需要又折腾一遍开发环境,无法快速搭建。

4. Why not KVM? 上述的有些问题可以通过在本地搭建虚拟机的方式来解决,那为什么我们不使用产生更久的虚拟机呢?使用Docker至少可以给我们带来如下好处: (1)Image方式带来的快速复制和分发。这是最首要考虑的因素,Docker image的使用方式,对任何修改都可以很方便的build成新的image,并可以迅速的共享给其他人,有新人加入时,不必再重新安装环境。 (2)可定制化的基础image。公司可以提供一些基础开发image,比如安装好了svn client,tcr.py,升级的gcc等,但是每个开发团队需要依赖的具体环境可能还不同,因此基础image的范围可大可小,每个团队都可以贡献和共享。当然这也是有权限控制的。 (3)Docker比虚拟机节省资源。Docker不用启动单独的一整套系统,而且可以实现Docker与本机或Docker间的资源共享。Docker也可以根据需要动态的扩充/缩小CPU、内存、硬盘资源。 (4)权限问题。即使是虚拟开发机,在公司内也不是那么容易申请的,而只要安装Docker环境,即可通过Docker进行开发。 (5)性能方面。Docker的性能到底如何?可以参考业界比较认可的一份IBM在2014年7月发表的一份research report,可以看到,Docker在各个资源维度上比虚拟机具有相当大的优势。

二、 Gaia为Docker带来更多 经过腾讯大数据TDW的锤炼,Gaia(盖娅)作为云操作系统,为TDW提供了高并发、可扩展的调度平台,每天运行container数8000w+。我们看到Docker的时候,比任何人都更加兴奋,很快投入了Docker on Gaia的开发。 1. 平台架构

图 2 平台架构 上图展示了Docker On Gaia的主要架构: Gaia master 为Gaia的大脑,负责接收作业的请求、任务调度、管理slave Gaia Slave 负责启动master发送的任务请求 Gaia Portal 是一个web服务器,用户可以通过页面提交作业 Service Registry为服务注册组件,可以实现服务的注册与发现 Docker hub是我们私有的docker镜像仓库,具有高可用行、高性能 Docker 安装在每个工作节点上,slave通过它启动docker作业 DFS 为分布式文件系统,基础组件,供集群各模块使用

2. 为Docker插上云的翅膀 Docker加Gaia的结合方式,让Docker有了一个完善的资源管理和聪明的调度大脑。 Docker可以寻找到更加适合的机器来运行,对于应用来说,真正做到了“Machines are anonymous“; Docker可以以最大化资源利用率的方式运行,节约成本; Docker可以自动部署,无需人工参与; Docker不再受到机器故障的制约,可以自动“再生”,满血复活,因为Gaia会自动识别故障机器,自动迁移Docker到健康机器上; Docker可以实现智能化scaling决策; Docker畅游云端,充分利用云平台的大规模效应,服务于海量用户;

3. Docker registry Gaia已经提供了公司级的docker registry服务,并且做了很多的优化,已经稳定支持线上的各种业务: 容量问题。修改registry后端的存储driver,直接使用HDFS实现存储容量无限大。 可靠性和可用性的问题。实现集群版registry,完美解决社区单机版的可靠性和可用性问题,真正实现无间断地提供服务。 性能问题。将单机版的registry扩展成registry cluster,并实现在registry server pool中的负载均衡,提升性能。 网络问题。解决了全国不同IDC的Gaia集群对registry的访问,采取就近访问的原则,不产生跨IDC流量。 自动同步官方image。Docker提供的官方image中,有很多还是非常有价值的,而官方的registry又在墙外(或内网不能访问),为此,我们自动同步docker的官方image到我们的私有仓库中。 具体可以参考:《腾讯docker“私服”:让docker爱好者玩起》。

4. 更好的docker Docker之于用户,带来了方便的image管理、易于复制等特性,Docker基于Gaia云平台,带来了隔离性、资源管理等特性。然而,Docker有很多机制还并不完善,Gaia团队对其做了很多的扩展和优化。 Docker目前主要管理了CPU和memory的管理,然而这两种机制都存在着一定的问题。基于share机制的CPU管理对部分服务类型的application,无法保证性能。而内存管理可能问题更大,hardlimit的管理策略,不但使用户进程容易被kill,更加造成了资源的浪费,对用户估计自己业务的资源需求也非常高。Gaia在基于cgroups 类型container中引入了EMC(Elastic Memory Control)的弹性内存管理机制,可以充分利用到整个物理机的资源,并且减少了container oom kill的概率,这也使Gaia版本的Docker比虚拟机更具优势。 Docker在资源管理纬度方面只有CPU和memory两个维度,这对于共享的云环境下需要完善,也是目前相对于虚拟机不足的地方。Gaia将会引入磁盘容量管理,网络出入带宽控制以及Disk IO的控制纬度。不但在Docker层做控制,还将会引进调度器,不但实现资源的隔离,还要实现资源的保证。

三、 Duang~ Docker开发云 认识和体验到利用Docker做开发的种种便捷和优势后,Gaia团队决定把这种开发方式推广起来,让这么美好的东西惠及更多的小伙伴。我们经过不断尝试,终于推出了“Docker开发云”的beta版。 下面让我带你了解一下这朵云提供了哪些服务呢? 1. 创建容器 用户只需填写一些如资源信息、镜像信息等启动参数,就可以可以像申请虚拟机一样申请一个docker容器, 2. 登录容器 创建好开发容器后,用户即可以通过ssh登陆自己开发容器(前提是容器内已启动了sshd服务),或者通过我们的webshell直接exec进入容器,简单、安全又方便。 3. 镜像快照 相当于于对镜像进行的“保存”或“另存为”功能。在Docker里搭建好环境,想共享给同事或自己保存时,通过我们的“快照”功能,帮你快速生成一个image并push到我们的Registry上,如此快捷方便,就是这么任性。 4. 其他功能 (1)修改名称。新建的Docker开发机会有一个默认的容器名,用户可以通过修改容容器名来标示自己的开发机,便于后面的使用。 (2)清理开发机。当用户不想要某个Docker开发机时,可以通过清理功能停掉它,以释放这部分资源。 (3)“关机”/“重启”。用户可以通过页面关闭、启动或重启自己的开发容器,就像操作一台物理机一样,只是更加方便快捷。

四、 美好的未来,这不是梦 相信在我们大家的共同努力下,将来的应用从开发到上线的流程应该是这样的: (1)开发人员申请并启动个人的Docker开发机,在已经搭建好的容器环境里编写代码、编译程序,并将调试好的环境保存至registry。无需为测试或运维同事打包代码并编写繁琐的环境部署或配置文档。 (2)测试人员从registry拉取该镜像,在与开发人员使用一样的环境配置下进行测试,不会因为环境、配置或版本的不一致而导致测试结果的异常。 (3)运维人员只需将通过测试的镜像提交到资源调度系统(以Gaia为例),输入必要的资源信息等提交参数,应用将自动部署到集群之中。Gaia会提供容灾、迁移、版本升级、资源监控等功能,还可以根据需要快速进行动态扩容缩容(如微信红包业务)。 看到如此敏捷高效的应用开发流程,你是否有些小激动呢?Come on!跟着DockerOn Gaia一起来体验先进的开发体验吧。

原文发布于微信公众号 - 腾讯大数据(tencentbigdata)

原文发表时间:2015-05-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Docker的局限之处

Docker,一个新的容器技术,它能够在相同的旧服务器上运行的更多的应用程序,这也使得它很容易打包和发布程序。它可以得到相同的硬件上比其他技术运行更多的应用(小...

38550
来自专栏企鹅号快讯

新版微信主界面新增小程序入口,小程序真正的红利已来临

微信小程序最近的更新又有点勤快了啊,就在刚才,在我百无聊赖的刷朋友圈的时候,微信公众平台官方给我推荐了这么一条消息,如图: ? 说实话,对于微信小程序这样的消息...

21990
来自专栏古时的风筝

Docker:Ubuntu下的安装

Docker是什么 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托 管在 GitHub ...

40950
来自专栏CodeSheep的技术分享

利用K8S技术栈打造个人私有云(连载之:初章)

最近在学习Docker技术,相信Docker技术大家都有所了解,Docker类似于虚拟机(但与虚拟机又有本质不同),提供进程级别的隔离。我们可以利用Docker...

431150
来自专栏企鹅号快讯

Kubernetes的前世今生和未来

有人认为自动化,云计算和人工智能是第四次工业革命。如果你开始感受到IT领域自动化率的飙升,特别是在应用程序部署和管理领域(我觉得还不是无缝的自插拔式),那么不用...

26560
来自专栏陈云的专栏

Docker 学习笔记 ( 一 ) 简介以及构架剖析

之前一直忙于项目工作,一直没有好好去系统学习,完善自己的知识体系,以致于在腾讯两年知识体系都没有深度发展,还是停留在原来的领域,所以从 8 月份开始学习 doc...

1.2K20

容器技术只是刚刚起步

自 Docker,Kubernetes 这些容器技术出现以来,已经有四个年头了。现在,有些人认为这些技术已经开始成熟。但我强烈反对这种说法,我认为容器基础设施的...

244100
来自专栏邵靖的专栏

一个基于 Docker 的负载均衡实例

本文目地主要是给大家简单安利一下目前最火的容器产品 Docker 及其所涉及的相关技术,并通过一个实际例子演示一下容器技术的典型应用场景。

3.3K10
来自专栏SDNLAB

SDN实战团分享(三):Docker网络使用体验

我今天和大家分享一下Docker的网络,主要是基于我的使用体验和对这里面的一些技术的理解,也顺便听取一下大家的建议。我是做培训的,大多数时候和理论的东西打交道,...

36660
来自专栏PPV课数据科学社区

【学习】性能基准测试:KVM大战Xen

在上周,我们对 KVM 和 Xen 近几年里在性能上的改进进行了一些有趣的探讨后,我打算自己做一些这方面的小研究。我能找到的最新的资料,是来自2013年 Ph...

40730

扫码关注云+社区

领取腾讯云代金券