--------------------------------------------------------------------------------------

Blog:    http://blog.csdn.net/chinagissoft

QQ群:

idkey=db34317167632c01ab4750de87c000ae63cf173cf6fcbbd724ae60213272da91">16403743

宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合。探讨"GIS+"技术和行业解决方式

转载说明:文章同意转载。但必须以链接方式注明源地址,否则追究法律责任!

--------------------------------------------------------------------------------------

题记

假如我们须要部署一个Webserver,我们须要做什么样的工作呢?

1、申请、扩展、购买硬件server资源;或者租用或购买VPS(公有云虚拟云主机)

2、安装操作系统(Windows或者Linux)

3、部署Webserver软件(Apache或者Nginx)

4、部署支持Web所需的开发环境(PHP、Python等)以及数据库(MySQL)

5、有些还须要在某些框架开发(Python的Django)

6、部署代码到Webserver软件的指定文件夹

7、配置公网IP地址

当然,走到这一步我们会感觉,看上去是比較麻烦。只是现实中我们有成熟的技术来解决这些问题啊,比如虚拟化镜像,可是我们仍然会有非常多问题须要解决。比如:

  • 1、同样软件环境的多个server安装(比如我们为了负载均衡)
  • 2、不同软件环境server的安装(比如我们的Python环境,有的须要2.7。但有的需求3.4)
  • 3、不同硬件环境的同样软件环境的安装(比如酷睿1的CPU不能满足需求。升级到酷睿5却没有同样的OS和软件环境)
这些都是我们所面临的问题,而虚拟化镜像就不能解决全部问题,他能够非常好的解决1和3。可是并不能同一时候解决2的问题。那么我们就能够通过容器技术来解决全部的问题。

容器技术


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

容器技术就是一种系统主要的虚拟化(System-level virtualization),它同意在同一个硬件环境和内核环境下。同意多个独立的用户空间实例的同意,多个User Space共享操作系统的Kernal。而我们所说的User Space事实上就是一个个的容器。

常见的SLV的解决方式包含:LXC、OpenVZ、Docker、Lmctfy。其它三个我们都有所耳闻,关于Lmctfy事实上是Google开源的容器虚拟化的实现,据说Google公司内部每周都会创建或者销毁近20亿个容器。

容器的核心技术

1、Cgroups限制容器的资源使用
事实上Linux内核本身就提供限制、记录和隔离进程组所使用的资源。通过不同的子系统(blkio、CPU等)记录对不同资源使用的控制和记录。

root@controller:/sys/fs/cgroup/cpu# ls
cgroup.clone_children cpu.cfs_period_us cpu.stat tasks
cgroup.procs cpu.cfs_quota_us notify_on_release user
cgroup.sane_behavior cpu.shares release_agent
root@controller:/sys/fs/cgroup/cpu# cat cpu.stat
nr_periods 0
nr_throttled 0
throttled_time 0


2、NameSpace机制,实现容器间的隔离
因为我们能够在同一个OS上面。实现N个容器的同步执行,所以我们一般通过NameSpace机制来实现容器间的隔离。包含下面相关參数:
•pid。容器有自己独立的进程表和1号进程
•net,容器有独立的networkinfo
•ipc。在ipc通信时,须要增加额外信息来标识进程
•mnt。每一个容器都有自己唯一的文件夹挂载
•utc。每一个容器有独立的hostname和domain


3、Chroot。文件系统的隔离
相同,我们知道一提起Linux操作系统。有Redhat,有Ubuntu,有Suse。有CentOS,不同Linux版本号基本上在同一Linux内核,仅仅是他们的Root file system不同,容器也是一样,他们有基于容器须要的类似于Root Fs的文件系统,能够实现基于同一个宿主机RootFS,并且还有容器自身不同的Root文件。


容器VS.虚拟机

不论什么提起容器的文件都不免会得到一个疑问。既然最早我们接触虚拟机的概念,如今又讲到容器,怎样来差别两者呢。两者是互相替代关系还是能够互补呢?

虚拟机

虚拟机是执行在物理宿主机上的软件抽象。配置一个虚拟机就像是购买一台计算机:你须要定义你想要的 CPU 数目、RAM 和磁盘存储容量。配置好了机器后,你为它载入操作系统。以及你想让虚拟机支持的不论什么server或者应用程序。

虚拟机同意你在一台硬件主机上执行多个模拟计算机。让你充分利用硬件资源。

这是虚拟机的优势。

可是虚拟机也有自己的不足:

全部分配给一个虚拟机的资源,不管是什么。都是专有的。

这里没有资源的流动。每台虚拟机拥有分配给它的全部资源。让它们跑起来须要非常长时间。假设你处于基础设施须要高速增长的情形,即使添加虚拟机是自己主动的。你仍然会发现你的非常多时间都浪费在等待机器上线。



容器

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

容器是一个Linux 进程,Linux 觉得它仅仅是一个执行中的进程。该容器进程也分配了它自己的 IP 地址。一旦给予了一个 IP地址,该进程就是宿主网络中可识别的资源。

容器/进程以动态、合作的方式共享主机上的资源。CPU、内存和存储空间的分配是动态的,和典型虚拟机的静态方式不同。因为容器作为OS的一个进程,所以容器能很高速地启动。

总结

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="792" height="328" alt="">

事实上如今对于两者而言,并没有绝对的替代关系。如今慢慢的把传统虚拟化当成云计算的IaaS,提供基础设施服务,容器很多其它的是在PaaS层。也就是执行在虚拟机内,提供服务。


GIS+=地理信息+容器技术(1)——容器技术概述的更多相关文章

  1. [资料分享]GIS+=地理信息+云计算+大数据+容器+物联网+...论文、会议、讲座资料分享

    分享地址 http://pan.baidu.com/s/1gesDSB5 部分内容截图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5 ...

  2. GIS+=地理信息+容器技术(4)——Docker执行

    -------------------------------------------------------------------------------------- Blog:    http ...

  3. GIS+=地理信息+容器技术(2)——Dockers技术介绍

    -------------------------------------------------------------------------------------- Blog:    http ...

  4. 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)

    [编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...

  5. 回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)

    前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱.所以需要继续加强. 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说 ...

  6. 『现学现忘』Docker相关概念 — 8、虚拟化技术和容器技术的关系

    目录 1.云计算中虚拟化技术和容器技术到的关系 2.虚拟机和容器对比 3.虚拟化技术和容器技术区别 1.云计算中虚拟化技术和容器技术到的关系 通过一个关于房间和住人的小问题,我们来初步的理解一下虚拟化 ...

  7. 基于GIS空间分析的多边形提取技术

    现有基于矢量图形的骨架线提取方法主要包括数据预处理.基于约束 Delauny 三角剖分的骨架线结点生成和骨架线的连接 3 个过程,上述过程都可利用现有 GIS 系统的数据处理.空间分析和建模功能实现. ...

  8. GIS+=地理信息+行业+大数据——纽约公开11亿条出租车和Uber原始数据下载及分析

    一览众山小编辑团队 原文/ Todd Schneider 翻译/ 沈玮薇 陈翚 文献/ 蒋理 校核/ 众山小编辑/ 众山小 排版/ 徐颖 2014-2015 © 转载请注明:源自公众号"一览 ...

  9. JAVA基础之JSP与EL技术、JSTL技术

    要牢记jsp四大作用域(pageContext域:当前jsp页面范围      request域:一次请求   session域:一次会话   application域:整个web应用)以及九大内置对 ...

随机推荐

  1. CentOs7 修改rpm安装背景图

    http://bbs.chinaunix.net/thread-4166176-1-1.html

  2. javascript必须知道的知识要点(二)

    该文章不详细叙述各知识要点的具体内容,仅把要点列出来,供大家学习的时候参照,或者检测自己是否熟练掌握了javascript,清楚各个部分的内容. 内建对象可划分为数据封装类对象.工具类对象.错误类对象 ...

  3. simpleOS 1.0

    做了一个so simple的OS,本不好意思多说的....不过还是说下吧. 首先,买不起开发板的我没有办完完成一件事,那就是保存任务上下文,因为这个过程实际上是将寄存器的值存放到任务堆栈中去的. 而要 ...

  4. 牛客练习赛19 -E-托米的饮料

    题目描述 好了,现在是小托米的故事啦~~~ 可爱的小托米得到了n瓶饮料. 但他不小心把开盖的工具弄丢了,所以他只能利用饮料瓶来开盖. 已知第i个瓶子的品牌为ai,且其能打开bi品牌的瓶子. 问有几瓶饮 ...

  5. MVVM实现ViewModel获取View输入验证状态

    由于Binding只把Convert成功的值送往Source,当目标中的值Convert失败时Source的值依然是旧值,所以ViewModel必须获取View的输入验证状态,以下是本人的实现. 当“ ...

  6. 5.17领扣--Arrays.copyOf()方法

    ?? 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同 ...

  7. 快速录入快递地址API接口实现

    电商.ERP等行业下单环节极其重要,如何提高下单的效率已经成为首要问题.快速下单对于客户来说,为提前发货争取了时间:对于卖家来说,提高了库存周转率及利用率.快速下单的接口实现,需要解决如下几个问题:1 ...

  8. Glitch-free clock switch

    With multi-frequency clocks being used in today’s devices, it's necessary to switch the source of a ...

  9. 使用Ajax验证用户名

    Ajax是一项很重要的技术,下面简要举个例子,来解释如何使用Ajax.步骤如下:使用Ajax验证用户名使用文本框的onBlur事件 使用Ajax技术实现异步交互创建XMLHttpRequest对象通过 ...

  10. c#动态类型Dynamic

    需引用System.Dynamic命名空间 来源:http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html dynamic Cus ...