你好,游客 登录 注册 发布搜索
背景:
阅读新闻

2015开篇Docker Meetup:从技术概念到商业实践

[日期:2015-01-19] 来源:CSDN  作者: [字体: ]

  自2013年3月20日Docker出现在开发者眼前,到现在不到两年时间。“Docker已经从一个伟大的idea变为一项伟大的技术,而且从一项伟大的技术转变为一个伟大的生态系统,甚至正在从一个伟大的生态系统转变为一项伟大的运动。”犹记得在2013年的Docker峰会上,开发者们还在讨论Docker是什么;而到了2014年的阿姆斯特丹峰会,与会者已经在分享它的实施案例了。

  然而,Docker的商业化前景却一直受到不少业内人士的诟病。从技术概念,到产品研发再到商业实践,Docker能否顺利跨越这几道门槛呢?

  1月18日,2015国内首次Docker Meetup走进UCloud总部,邀请到了联科集团联席合伙人吴秉宗、Linux内核专家万林涛、Cisco高级工程师杨章显、UCloud高级技术专家罗成对等Docker领域的技术大牛,为大家带来Docker与Joyent的融合、Docker在P2P互联网金融应用实施、Kubernetes系统架构介绍、Docker与数据库应用等与商业实践密切相关的Docker话题。他们的分享能让我们对这一问题有更新的认识。

  应用程序容器Docker与基础设施容器Joyent SmartMachines的融合

  首先,联科集团的联席合伙人吴秉宗,作为Joyent在大中华地区的代表,分享了“应用程序容器与基础设施容器的融合”的最新情况,优势及JoyentSmart Cloud Technology高性能云技术的主要概念。

  Joyent是美国三大公有云提供商之一,这也是一家“任性”的公司,曾经把Twitter这个大客户“请”出了自己的平台,原因就是Twitter提供的服务不稳定,而且拒不接受改进建议,Joyent认为这会影响其服务质量的声誉。

  目前,Joyent对Docker的支持是基于KVM的,未来会提供基于SmartOS的Docker服务。Joyent的SmartOS基于illumos,而illumos是SUN被Oracle收购后,OpenSolaris分裂出来的版本。Joyent希望SmartOS成为Docker的最佳运行场所。吴秉宗介绍并举例说明了Docker+SmartOS的以下三个优势:

  高可扩展性——垂直扩展;

  无重启地扩展存储及内存RAM;

  卓越性能,利用ARC缓存成就优越的磁盘I/O

  Docker在Devops流程中的使用

  点融网运维技术主管万林涛,以点融P2P互联网金融应用为例,介绍Docker在点融网Devops流程中的重要作用。着重讲解Docker对简化开发环境配置、应用快速部署、生产环境弹性运维的实战细节。

  目前点融网在开发、测试整个生产流程都在使用Docker,为什么选择Docker?基于以下几个诉求:

  希望能充分利用硬件资源的能力;

  希望能简化配置,一次配置,多处复用;

  希望能按需部署,点融网属于互联网金融行业应用,对应用的弹性有较高要求;

  互联网金融行业对安全有较高的要求,希望能够基于一个安全的环境。

  而Docker性能较高,容易上手,在后续还有助于将P2P服务SaaS化。

  Docker在点融的使用情况

  点融网除去防火墙、Load Blance和数据库外,都已经实现了Docker化。因为Load Blance不需要经常重复配置和动态管理。

  在CI流程中,点融网是这样使用Docker的:Git做管理代码,Jenkins做编译,Docker将代码打包成image文件,最后交付给Runtime环境运行。

  谈到Docker在生产环境中是不是Ready的问题,万林涛的回答是肯定的:

  首先,Docker架构简单,已经达到了比较稳定的状态;

  在Docker1.2之后,添加了Monitor的角色,可以随时监测进程;

  Docker的沙盒机制,也为安全性提供了保证;

  Docker还提供了完整的API和library,能够很简单地去集成和开发应用。

  Docker的经验

  Docker默认的存储是Loop Device的方式,万林涛推荐把Volum直接放在disk上,可以突破性能和存储量大小的限制;

  推荐通过环境变量来实现配置,可以简化后续的配置变更;

  注意精简Docke images,可以节省很多不必要的资源消耗;

  Docker的问题

  每次Docker更新时服务都会中断,不能无中断更新。好消息是这个issue已经被提交给Docker的CEO,坏消息是早就提交了,但一直没被解决;

  权限控制的粒度太大,当普通用户被加入到一组group中时,就会具备所有的权限,这样的设计对不够安全。点融目前的做法是host OS对普通用户不开放;

  User Mapping:UID实际在host上并不存在,日志等无法记录;

  官方的Image镜像不太稳定,万林涛在这里推荐了几个国内的镜像服务:DaoCloud.io,docker.cn和dockerpool.com;

  网络虚拟化和Docker的结合做得还不够好;

  Kubernetes系统架构介绍

  Cisco高级工程师杨章显,首先介绍了Kubernetes的基本信息,Kubernetes是Google开源的容器集群管理工具,具有轻量、简单、适用度广、可扩展和自我修复等特点。

  Kubernetes中有几个核心概念,理解了它们就能大概理解Kubernetes的核心架构:

  Kubernetes的架构

  Pod:Docker容器的集合,可以通过Kubernetes创建、调度、管理;

  BoundPod:运行在主机上的容器集合;

  Replication Controller:Pod的集合,Replicas副本,确保任何时候指定数量Pod在运行,管理Pod的生命周期;

  Services:一系列Pod的单一访问portal,服务IP,服务端口,负载均衡器;

  Labels/Selector:键值对,用于管理和选择一组对象;

  杨章显在这几个概念的基础上介绍了Kubernetes的系统架构,Kubernetes由哪些组件构成,各个组件的主要功能以及各个组件之间如何通信、协同工作。

  Docker与数据库的应用结合

  UCloud高级技术专家罗成对,带来的演讲内容是Docker与数据库的应用结合。早在2013年,UCloud就开始践行Docker。针对UCloud自身业务的快速增长和业务数据的暴涨,UDB产品本身具备高可用、高扩展性,所以内部业务将Docker化的UDB作为首选。按需申请、极速部署非常完美得解决了业务带来的存储压力。目前UDB集群运行稳定,内部有几千个docker容器提供数据服务和网络服务,完美地支撑公司云平台,支持众多产品线。

  罗成对最后分享了实践中一些宝贵经验以及Docker的优缺点,笔者认为很有借鉴意义:

  经验

  Image方面:保证来源干净可靠(推荐官网),并不是被引用越多的镜像越可靠;利用Dockerfile安装必要工具;要有合理的版本维护;

  操作系统:内核版本和Docker要适配;cgroups挂载点;最大文件数,限制DB的连接数等等;

  数据卷持久化数据:设置合理的读写权限;

  安全性是很多人一直关注的问题,罗成对认为Docker已经提供了足够好的安全特性,如果对安全要求极高,还可以从以下几个方面进行进一步改进:

  网络设置:自定义网桥,限制docker0;内网隔离;禁止暴露端口;配置DNS等;

  安全加强:启用SELinux/GRSEC,启用能力机制,注意某些超级权限;

  DockerDaemon防护:禁止宿主机根目录映射,禁止滥用root权限。

  Docker的问题及应对措施

  罗成对主要介绍了以下几个问题及应对措施:

  Service异常:出现停服、自动重启(概率极低)的问题,造成container存活状态存在不确定性,应对措施是实时监控dockerservice;

  数据卷读写异常:rw变ro(小概率事件),造成映射目录无法写入,应对措施是重启container;

  Docker版本升级异常:向下不兼容,造成已存images消失,这种情况只能预防,保持存量机器不升级;

  Dockercgroup异常,会造成资源使用超配额,导致OOM,应对措施是实时监控资源使用率。

收藏 推荐 打印 | 录入:574107552 | 阅读:
相关新闻       Docker Kubernetes 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款