容器技术初学

来源:互联网 发布:linux开放端口 编辑:程序博客网 时间:2024/06/04 08:20

从2015年开始,容器技术开始大火,容器被誉为是一种处理虚拟计算的新方法。现在越来越多的企业开始使用容器技术,所以值得一学。

什么是容器?
容器有何特别之处?
该如何使用容器?

一、容器?
  容器技术是通过使用主机上的孤立进程,建立虚拟环境的一种方法。这种孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。容器不会侵扰主机系统,主机系统也不会侵扰容器。
  容器在主机内核上运行。一个名为容器管理器的组件确保容器可以在主机上运行。容器在共享环境下有自己的资源。
这里写图片描述

二、容器有何特别之处?
  首先要了解虚拟机。虚拟机是一个模拟计算机的软件。虚拟机的优点在于可以大大提高使用硬件的效率,好多虚拟机可以在一个硬件上运行。


  那么虚拟机技术有一个很大的缺点就是:无论任何一个虚拟机使用它的全部资源,还是只是一小部分资源,硬件分配是静态的。换句话说,如果其中一个虚拟机使用的内存从不超过1GB,只存储100MB的文件系统,该虚拟机仍占用4 GB内存和整整1TB的存储空间,尽管该虚拟机只使用25%的内存和1%的存储空间。
  相比之下,容器并不死死占用资源。构建一个容器时,不用为它分配内存、处理器或存储空间。事实上,容器以共享方式使用主机上的内存、处理器和存储空间。只要物理机处理得了,可以将好多个容器装入到该物理机上。容器只有在需要资源时才占用所需的那部分资源。不存在资源分配是固定的说法。

  在构建容器时,可以添加所选择的操作系统;比如说Ubuntu。容器里面的Ubuntu操作系统会充分利用主机内核,不过会有属于Ubuntu一部分的程序包。比如说,虽然内核对软件包管理一无所知,但Ubuntu会提供软件包管理工具apt-get。此外,可以配置容器,以便使用特殊的Web服务器和脚本解释器等等。结果就是,你获得了虚拟机提供的环境配置,又不因静态分配而死死占用主机系统上的资源。另外,容器会有一个主机里面可见的IP地址。因而,主机可以通过容器的IP地址,直接访问容器。容器共享主机资源,并充分利用主机操作系统提供的内核级服务。

这里写图片描述

  但是容器面临的一个限制是,无法混合搭配多个操作系统。在虚拟机领域,让Windows主机支持运行Linux的虚拟机或者让OS X系统运行Windows虚拟机相当常见。而容器就不是这样了;原因是,就本身而言,容器使用主机内核。因而,你要做到操作系统相互匹配。也就是说,Linux容器在Linux主机上运行。你可以在Windows Server(直至Windows Server 2016)上运行Windows容器。另外,还有Windows版的容器管理器:Docker。
  要是你发现自己需要在Windows上运行Linux容器,总是可以在Windows下启动Linux虚拟机,使用Linux虚拟机作为主机系统。

三、该如何使用容器?
  容器管理器
  容器管理器是一种工具,可用来构建容器、部署容器,让容器在主机上运行。截至本文截稿时,市面上最流行的容器管理器是Docker和Rocket。
  容器管理器的工作方式如下:假设你用PHP编写了一个短小的Hello World Web应用程序。你要创建一个容器配置文件,你会在其中描述应用程序所需的PHP文件。同样在该配置文件中,你要定义应用程序所需的各层。在这里,假设你的应用程序需要PHP 5.6解释器,你想要在Apache网站服务器下运行。到时就可以通过容器管理器,发出命令来运行你的应用程序。容器管理器在后台会执行这些操作:(1)读取配置文件,确定需要从注册中心获得的各层;(2)创建容器映像;(3)添加应用程序源文件;(4)在主机上启动容器。

  了解层和映像
  容器由一个个层组成。层就是容器映像。可能先是操作系统底层。然后,你声明其他层,比如说Web服务器和脚本运行时环境。一旦定义好了容器,就可以在已定义容器的基础上构建映像。映像是容器的模板,你可以在一个或多个主机上重复使用它。
  下图表明了主机运行CoreOS、使用Docker作为容器管理器的一种场景。有三个容器在主机上运行。一个容器使用Debian作为基本的操作系统层,Apache用作网站服务器,PHP 5.5用作脚本运行时环境,还使用自定义PHP应用程序(已为它构建了容器)。另一个容器用于额外的自定义PHP应用程序,使用nginx作为网站服务器,PHP 5.6作为脚本解释器,它们都在RHEL基本映像上运行。最后,第三个容器有一个JSP应用程序在Tomcat和Apache上运行,位于Ubuntu基本映像上。
这里写图片描述
  容器映像可以定义某个特殊主机为基本映像,然后分别为网站服务器、脚本运行时环境和脚本文件添加层。

原创粉丝点击