在云计算领域有一个新的技术,称为容器。

传统的云计算是基于虚拟机技术的,而容器技术解决了虚拟机原来解决不了的问题。

云计算主要解决的是资源弹性的问题,感兴趣的可以看历史文章《不懂技术也能看懂云计算,大数据,人工智能》。

所谓资源,主要是指计算,网络,存储。罗永浩在采访中说过,他要做最大的计算平台,当前是手机,其实大家买手机也是关心CPU,内存有多少,有多大的存储空间,3G还是4G网络的问题。

云计算所能解决的是计算,网络,存储这三种资源想什么时候要什么时候要,想要多少要多少的问题。

但是云计算解决不了的问题有两个:

第一个问题是应用层的扩展性问题。

例如我开发一个电商应用,平时的时候10台机器能扛的住,双十一的时候需要100台才能抗的住。那怎么办?云计算平台可以实现一点90台新机器就出来了,但是机器是空的啊,上面什么应用都没安装,还需要人工登到每台机器上去一台一台的部署,非常麻烦。

后来人们想了两种方式解决这个问题,第一种方式是采用自动化脚本来安装,不需要手动来,而是自动来,第二种方式是通过虚拟机的镜像,在虚拟机上把应用都安装好,然后像孙悟空一样,说“定”,虚拟机里面的状态就保存下来了,后面扩展的时候,通过这个镜像来完成。

这两种方式部分的解决了第一个问题,随之而来的是第二个问题,迁移性问题。

软件往往是需要不断的在不同的环境里面安装的,例如开发人员自己会安装一套,测试人员会安装一套,线上环境也会安装一套。然而软件的安装是非常复杂的,牵扯到权限问题,配置问题,文件路径问题等,一不小心就会出错,出错了软件的行为就不对了,你上网买东西,用银行支付都可能出错,造成大麻烦。

一开始人们还是想通过上面两种方式来解决这个问题的,但是都不太成功。一是通过自动化脚本,然而不同的环境千差万别,一个脚本往往在一个环境上运行正确,到另一个环境就不正确了。二是通过虚拟机镜像,然而虚拟机镜像太大了,动不动就几十个G,拷贝和下载都太费时间,而且大多数公有云平台都不提供虚拟机镜像的上传和下载,亚马逊上的虚拟机镜像,就没办法下载到你的数据中心里面来,也没法放到网易云上去。

于是为了解决这两大问题,容器诞生了。

容器是 Container,Container另一个意思是集装箱,其实容器的思想就是要变成软件交付的集装箱。集装箱的特点,一是封装,二是标准。

在没有集装箱的时代,假设将货物从 A运到 B,中间要经过三个码头、换三次船。每次都要将货物卸下船来,摆的七零八落,然后搬上船重新整齐摆好。因此在没有集装箱的时候,每次换船,船员们都要在岸上待几天才能走。

有了集装箱以后,所有的货物都打包在一起了,并且集装箱的尺寸全部一致,所以每次换船的时候,一个箱子整体搬过去就行了,小时级别就能完成,船员再也不用上岸长时间耽搁了。

这是集装箱“封装”、“标准”两大特点在生活中的应用。

那么容器如何对应用打包呢?还是要学习集装箱,首先要有个封闭的环境,将货物封装起来,让货物之间互不干扰,互相隔离,这样装货卸货才方便。好在 Ubuntu中的LXC技术早就能做到这一点。

封闭的环境主要使用了两种技术,一种是看起来是隔离的技术,称为 Namespace,也即每个 Namespace中的应用看到的是不同的 IP地址、用户空间、程号等。另一种是用起来是隔离的技术,称为 Cgroups,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。

有了这两项技术,集装箱的铁盒子我们是焊好了,接下来就是决定往里面放什么。

最简单粗暴的方法,就是将所有的都放到集装箱里面,就像虚拟机镜像一样,但是这样太大了!因为即使你安装一个干干静静的操作系统,什么都不装,就很大了。把操作系统装进容器相当于把船也放到了集装箱里面!传统的虚拟机镜像就是这样的,动辄几十G。答案当然是 NO!所以第一项操作系统不能装进容器。

撇下第一项操作系统,剩下的所有的加起来,也就几百 M,就轻便多了。因此一台服务器上的容器是共享操作系统内核的,容器在不同机器之间的迁移不带内核,这也是很多人声称容器是轻量级的虚拟机的原因。轻不白轻,自然隔离性就差了,一个容器让操作系统崩溃了,其他容器也就跟着崩溃了,这相当于一个集装箱把船压漏水了,所有的集装箱一起沉。

另一个需要撇下的就是随着应用的运行而产生并保存在本地的数据。这些数据多以文件的形式存在,例如数据库文件、文本文件。这些文件会随着应用的运行,越来越大,如果这些数据也放在容器里面,会让容器变得很大,影响容器在不同环境的迁移。而且这些数据在开发、测试、线上环境之间的迁移是没有意义的,生产环境不可能用测试环境的文件,所以往往这些数据也是保存在容器外面的存储设备上。这也是为什么人们称容器是无状态的。

至此集装箱焊好了,货物也装进去了,接下来的问题就是如何将这个集装箱标准化,从而在哪艘船上都能运输。这里的标准一个是镜像,一个是容器的运行环境。

所谓的镜像,就是将你焊好集装箱的那一刻,将集装箱的状态保存下来,就像孙悟空说:“定”,集装箱里面就定在了那一刻,然后将这一刻的状态保存成一系列文件。这些文件的格式是标准的,谁看到这些文件都能还原当时定住的那个时刻。将镜像还原成运行时的过程(就是读取镜像文件,还原那个时刻的过程)就是容器运行的过程。除了大名鼎鼎的 Docker,还有其他的容器,例如 AppC、Mesos Container,都能运行容器镜像。所以说容器不等于 Docker。

总而言之,容器是轻量级的、隔离差的、适用于无状态的,可以基于镜像标准实现跨主机、跨环境的随意迁移。

有了容器,使得 PaaS层对于用户自身应用的自动部署变得快速而优雅。容器快就快在两方面:第一,虚拟机启动的时候要先启动操作系统,容器不用启动操作系统,因为是共享内核的;第二,虚拟机启动后使用脚本安装应用,容器不用安装应用,因为已经打包在镜像里面了。所以最终虚拟机的启动是分钟级别,而容器的启动是秒级。容器咋这么神奇?其实一点都不神奇,第一是偷懒少干活了,第二是提前把活干好了。

由于容器的粒度更加细,管理起来更难管,甚至是手动操作难以应对的。假设你有 100台物理机,其实规模不是太大,用 Excel人工管理是没问题的,但是一台上面开 10台虚拟机,虚拟机的个数就是 1000台,人工管理已经很困难了,但是一台虚拟机里面开 10个容器,就是 10000个容器,你是不是已经彻底放弃人工运维的想法了。

所以容器层面的管理平台是一个新的挑战,关键字就是自动化:

自发现:容器与容器之间的相互配置还能像虚拟机一样,记住 IP地址然后互相配置吗?这么多容器,一旦一台虚拟机挂了重启,IP改变,你怎么记得住应该改哪些配置,列表长度至少万行级别的啊。所以容器之间的配置通过名称来的,无论容器跑到哪台机器上,名称不变,就能访问到。

自修复:容器挂了,或是进程宕机了,能像虚拟机那样登陆上去查看一下进程状态,如果不正常可以重启一下么?那你要登陆万台 Docker了。所以容器的进程挂了,容器就自动挂掉了,然后自动重启。

弹性自伸缩 Auto Scaling:当容器的性能不足的时候,需要手动伸缩、手动部署么?当然也要自动来。

当前火热的容器管理平台有三大流派:

一个是 Kubernetes,我们称为段誉型。

段誉(Kubernetes)的父亲(Borg)武功高强,出身皇族(Google),管理过偌大的一个大理国(Borg是 Google数据中心的容器管理平台)。作为大理段式后裔,段誉的武功基因良好(Kubernetes的理念设计比较完善),周围的高手云集,习武环境也好(Kubernetes生态活跃,热度高),虽然刚刚出道的段誉武功不及其父亲,但是只要跟着周围的高手不断切磋,武功即可飞速提升。

一个是 Mesos,我们称为乔峰型。

乔峰(Mesos)的主要功夫降龙十八掌(Mesos的调度功能)独步武林,为其他帮派所无。而且乔峰也管理过人数众多的丐帮(Mesos管理过 Tweeter的容器集群)。后来乔峰从丐帮出来,在江湖中特例独行(Mesos的创始人成立了公司 Mesosphere)。乔峰的优势在于,乔峰的降龙十八掌(Mesos)就是在丐帮中使用的降龙十八掌,相比于段誉初学其父的武功来说,要成熟很多。但是缺点是,降龙十八掌只掌握在少数的几个丐帮帮主手中(Mesos社区还是以 Mesosphere为主导),其他丐帮兄弟只能远远崇拜乔峰,而无法相互切磋(社区热度不足)。

一个是 Swarm,我们称为慕容型。

慕容家族(Swarm是 Docker家族的集群管理软件)的个人功夫是非常棒的(Docker可以说称为容器的事实标准),但是看到段誉和乔峰能够管理的组织规模越来越大,有一统江湖的趋势,着实眼红了,于是开始想创建自己的慕容鲜卑帝国(推出 Swarm容器集群管理软件)。但是个人功夫好,并不代表着组织能力强(Swarm的集群管理能力),好在慕容家族可以借鉴段誉和乔峰的组织管理经验,学习各家公司,以彼之道,还施彼身,使得慕容公子的组织能力(Swarm借鉴了很多前面的集群管理思想)也在逐渐的成熟中。

三大容器门派,到底鹿死谁手,谁又能一统江湖,尚未可知。

不是技术也能看懂容器技术与容器平台相关推荐

  1. 【转载】不是技术也能看懂云计算,大数据,人工智能

    (点击上方公众号,可快速关注) 作者: 刘超 www.cnblogs.com/popsuper1982/p/8505203.html 原标题:不是技术也能看懂云计算,大数据,人工智能 我今天要讲这三个 ...

  2. 看懂英文技术文档,每天只需要10分钟做这件事……

    程序员这个行业是很特殊的.之所以说特殊,就是因为它所有的技术大多来自欧美,所以最主流,最新鲜,最正确的技术文章都是英文,遗憾的是,大部分还没有译本. 有些译文还比较差.与其等待别人的翻译,不如直接阅读 ...

  3. 看懂英文技术文档,每天只需要10分钟做这件事…

    程序员这个行业是很特殊的.之所以说特殊,就是因为它所有的技术大多来自欧美,所以最主流,最新鲜,最正确的技术文章都是英文,遗憾的是,大部分还没有译本. 有些译文还比较差.与其等待别人的翻译,不如直接阅读 ...

  4. 计算机音响的技术指标怎么填,音响技巧之怎么看懂音箱技术参数

    音响技巧之怎么看懂音箱技术参数 音响逐渐成为我们生活的一部分,但是音箱的参数你是否真的都懂它们的意思呢?今天小编来跟大家简单谈一谈音箱的技术指标,希望对大家在选购音箱的时候有所帮助. 一.频响范围 频 ...

  5. 不是技术也能看懂云计算,大数据,人工智能

    我今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西呢?因为这三个东西现在非常非常的火,它们之间好像互相有关系,一般谈云计算的时候也会提到大数据,谈人工智能的时候也会提 ...

  6. 不懂技术也能看懂的云计算/大数据/人工智能

    今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西呢?因为这三个东西现在非常非常的火,它们之间好像互相有关系,一般谈云计算的时候也会提到大数据,谈人工智能的时候也会提大 ...

  7. 不懂技术也能看懂云计算,大数据,人工智能

    我今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西呢?因为这三个东西现在非常非常的火,它们之间好像互相有关系,一般谈云计算的时候也会提到大数据,谈人工智能的时候也会提 ...

  8. 不是技术也能看懂云原生

    云原生越来越火了,无论是企业内部,还是技术论坛,上到应用架构,中到数据库存储,下到基础设施,无不谈云原生.可是云原生到底是什么,容易让人感到概念混乱不清.其实这不怪大家,这个概念太新了,不但大家困惑, ...

  9. AI绘画火了!一文看懂背后技术原理

    导语 | 近些年AI蓬勃发展,在各行各业都有着不同方式的应用.而AI创作艺术和生产内容无疑是今年以来最热门的话题,AI创作到底发生过什么,原理又是如何,是噱头还是会有对我们有用的潜在应用场景呢?我们旨 ...

最新文章

  1. 2022-2028年中国汽车雷达行业深度调研及投资前景预测报告
  2. 对操作系统安全构成威胁的问题
  3. GPP加密破解工具gpp-decrypt
  4. measureChildren作品
  5. typora高级设置字体_Mint(Linux)系统设置优化及其常用软件安装笔记
  6. 微信电脑客户端登陆_电脑端的微信只能开一个?简单操作就能随意开
  7. 【Magicodes.IE 2.0.0-beta1版本发布】已支持数据表格、列筛选器和Sheet拆分
  8. DataNode,NameNode,JobTracker,TaskTracker用jps查看无法启动解决办法
  9. 计算机教育专业需要学什么,教育知识:计算机专业都学什么
  10. 2012r2配置java_JDK+Tomcat 服务器配置+腾讯云Win2012 R2 配置安装
  11. 2016年1月书单推荐
  12. 改写画质、突破性能, Unity 全面升级!
  13. 理解Android Framework
  14. Javascript——读取json文件方法总结
  15. 51单片机入门(第二讲)
  16. 各双拼输入方案之间有明显的优劣之分吗?
  17. 5.Lucene 基本原理(六)字典实现原理 FST(Finite State Transducer)
  18. xingtai - 时间
  19. python图片转视频加特效_视频剪切成图像+图像合成视频+python
  20. 太空射击 第07课: 添加图形

热门文章

  1. 网内病毒问题快速排除集锦
  2. WCF学习之旅—请求与答复模式和单向模式(十九)
  3. 关于oracle sql developer乱码的问题
  4. 《Build your own AngularJS》笔记分享
  5. SQL Server 分区表的创建方法与管理
  6. MySQL 5.6.11 GA 发布
  7. 2011年9月最新整理的10个有趣的jQuery插件集合
  8. 如何在page_load方法判断是服务器端控件引发的page_load方法
  9. CMFCTABCTRL 简介及BUG处理
  10. linux系统中 库分为静态库和,你知道linux 静态库和共享库?