GIS+=地理信息+容器技术(1)——容器技术概述

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

版权所有:超图研究所(www.supermap.com)

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

QQ群:16403743

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

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

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


题记

假如我们需要部署一个Web服务器,我们需要做什么样的工作呢?

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

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

3、部署Web服务器软件(Apache或者Nginx)

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

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

6、部署代码到Web服务器软件的指定目录

7、配置公网IP地址

当然,走到这一步我们会感觉,看上去是比较麻烦,不过现实中我们有成熟的技术来解决这些问题啊,例如虚拟化镜像,但是我们仍然会有很多问题需要解决,例如:

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

容器技术


GIS+=地理信息+容器技术(1)——容器技术概述_第1张图片
容器技术就是一种系统基本的虚拟化(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文件。
GIS+=地理信息+容器技术(1)——容器技术概述_第2张图片

容器VS.虚拟机

任何提起容器的文件都不免会得到一个疑问,既然最早我们接触虚拟机的概念,现在又讲到容器,如何来区别两者呢,两者是互相替代关系还是可以互补呢?

虚拟机
GIS+=地理信息+容器技术(1)——容器技术概述_第3张图片

虚拟机是运行在物理宿主机上的软件抽象。配置一个虚拟机就像是购买一台计算机:你需要定义你想要的 CPU 数目、RAM 和磁盘存储容量。配置好了机器后,你为它加载操作系统,以及你想让虚拟机支持的任何服务器或者应用程序。虚拟机允许你在一台硬件主机上运行多个模拟计算机。你充分利用硬件资源。这是虚拟机的优势。


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

所有分配给一个虚拟机的资源,无论是什么,都是专有的。这里没有资源的流动。每台虚拟机拥有分配给它的所有资源。让它们跑起来需要很长时间。如果你处于基础设施需要快速增长的情形,即使增加虚拟机是自动的,你仍然会发现你的很多时间都浪费在等待机器上线。




容器
GIS+=地理信息+容器技术(1)——容器技术概述_第4张图片

容器是一个Linux 进程,Linux 认为它只是一个运行中的进程。该容器进程也分配了它自己的 IP 地址。一旦给予了一个 IP地址,该进程就是宿主网络中可识别的资源。容器/进程以动态、合作的方式共享主机上的资源。CPU、内存和存储空间的分配是动态的,和典型虚拟机的静态方式不同。由于容器作为OS的一个进程,所以容器能非常快速地启动。


总结

GIS+=地理信息+容器技术(1)——容器技术概述_第5张图片


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


你可能感兴趣的:(namespace,docker,容器,chroot,cgroup)