再见Docker,8款容器替代方案
Dockr诞生于年,并普及了容器的概念,以至于大多数人仍然将容器的概念等同于“Dockr容器”。
作为第一个吃螃蟹的人,Dockr设置了新加入者必须遵守的标准。例如,Dockr有一个大型系统镜像库。所有的替代方案都必须使用相同的镜像格式,同时试图改变Dockr所基于的整个堆栈的一个或多个部分。
在此期间,出现了新的容器标准,容器生态系统朝着不同方向发展。现在除了Dockr之外,还有很多方法可以使用容器。
在本文中,我们将介绍以下内容:
将Chroot、cgroups和命名空间作为容器的技术基础
定义Dockr所基于的软件堆栈
说明Dockr和Kubrnts需要坚持和遵守的标准
介绍替代解决方案,这些解决方案尝试使用具有更好更安全的组件来替换原始Dockr容器。
容器的软件堆栈
像Chroot调用、cgroups和命名空间等Linux特性帮助容器在与所有其他进程隔离的情况下运行,从而保证运行时的安全性。
Chroot
所有类似Dockr的技术都起源于类似Unix操作系统(OS)的根目录。在根目录上方是根文件系统和其他目录。
从长远来看,这是很危险的,因为根目录中任何不需要的删除都会影响整个操作系统。这就是为什么存在一个系统调用chroot()。它创建了额外的根目录,例如一个用于运行遗留软件,另一个用于包含数据库等等。
对于所有这些环境,chroot似乎是一个真正的根目录,而是实际上,它只是将路径名添加到任何以/开头的名字上。真正的根目录仍然存在,并且任何进程都可以引用指定根目录以外的任何位置。
Linuxcgroups
自年2.6.24版本以来,Controlgroups(cgroups)一直是Linux内核的一项功能。Cgroup将同时限制、隔离和测量多个进程的系统资源(内存、CPU、网络和I/O)使用情况。
假设我们想阻止用户从服务器发送大量电子邮件。我们创建了一个内存限制为1GB、CPU占用率为50%的cgroup,并将应用程序的procssid添加到该组中。当达到这些限制时,系统将限制电子邮件发送过程。它甚至可能终止进程,这取决于托管策略。
Namspacs
Linux命名空间是另一个有用的抽象层。命名空间允许我们拥有许多进程层次,每个层次都有自己的嵌套“子树(subtr)”。命名空间可以使用全局资源,并将其呈现给其成员,就像它是自己的资源一样。
具体来看,Linux系统开始时的进程标识符(PID)为1,并且所有其他进程将包含在其树中。PID命名空间允许我们跨越一棵新树,它拥有自己的PID1进程。现在有两个值为1的PID,每个命名空间可以产生自己的命名空间,并且相同的过程可以附加了几个PID。
子命名空间中的一个进程将不知道父级的进程存在,而父命名空间将可以访问整个子命名空间。
有七种类型的名称空间:cgroup、IPC、网络、mount、PID、用户和UTS。
NtworkNamspac
一些资源是稀缺的。按照惯例,有些端口具有预定义的角色,不应用于其他任何用途:端口80仅服务于HTTP调用,端口仅服务于HTTPS调用等等。在共享主机环境中,两个或多个站点可以监听来自端口80的HTTP请求。第一个获得该端口的站点不允许任何其他应用程序访问该端口上的数据。第一个应用程序在互联网上是可见的,而其他所有应用程序将不可见。
解决方案是使用网络命名空间,通过网络命名空间,内部进程将看到不同的网络接口。
在一个网络命名空间中,同一端口可以是开放的,而在另一个网络命名空间中,可以关闭该端口。为此,我们必须采用额外的“虚拟”网络接口,这些接口同时属于多个命名空间。中间还必须有一个路由器进程,将到达物理设备的请求连接到相应的名称空间和其中的进程。
复杂吗?这就是为什么Dockr和类似工具如此受欢迎。现在让我们来介绍一下Dockr,以及它的替代方案。
Dockr:人人可用的容器
在容器统治云计算世界之前,虚拟机非常流行。如果你有一台Windows机器,但想为iOS开发移动应用程序,你可以购买一台新的Mac,或者将其虚拟机安装到Windows硬件上。虚拟机也可能是笨重的,它们经常吞噬不需要的资源,而且启动速度通常很慢(长达一分钟)。
容器是标准软件单元,具有运行程序所需的一切:操作系统、数据库、镜像、图标,软件库、代码和所需的其他组件。容器的运行也与所有其他容器,甚至与操作系统本身隔离。与虚拟机相比,容器是轻量级的,所以它们可以快速启动,并且容易被替换。
要运行隔离和保护,容器需要基于Chroot、cgroups和命名空间。
容器的镜像是在实际机器上形成应用程序的模板,能够根据单个镜像创建尽可能多的容器,一个名为Dockrfil的文本文件包含了组装镜像所需的所有信息。
Dockr带来的真正革命是创建了Dockr镜像仓库和开发了Dockr引擎,这些镜像以相同的方式在各地运行,作为第一个被广泛采用的容器镜像,形成了一个不成文的世界标准,所有后来的入局者都必须
转载请注明:http://www.sinoeverlife.com/glscf/13525.html