容器的本质

243 阅读3分钟

容器的本质

容器到底是什么

广义上说,容器技术是动态的容器、静态的镜像和远端的仓库这三者的组合。

容器,就是一个特殊的隔离环境,它能够让进程只看到这个环境里的有限信息,不能对外界环境施加影响。

为什么要隔离

隔离,是为了系统安全的考虑。

使用容器技术,我们就可以让应用程序运行在一个有严密防护的“沙盒”(Sandbox)环境之内。

容器技术的另一个本领就是为应用程序加上资源隔离,在系统里切分出一部分资源,让它只能使用指定的配额。

与虚拟机的区别

image.png

从实现的角度来看

  • 虚拟机:虚拟化出来的是硬件,需要在上面再安装一个操作系统后才能够运行应用程序,而硬件虚拟化和操作系统都比较“重”,会消耗大量的 CPU、内存、硬盘等系统资源。
  • 容器:直接利用了下层的计算机硬件和操作系统,因为比虚拟机少了一层,所以自然就会节约 CPU 和内存,显得非常轻量级,能够更高效地利用硬件资源

image.png

从运行效率来看

容器相比虚拟机最大的优势,就在于运行效率,同样的系统资源,虚拟机只能跑3个应用,容器却能跑6个左右。

安装一个Ubuntu系统,很容易就用到10G左右硬盘空间;但使用容器,ubuntu的镜像则只有几十MB,启动也非常快。

隔离是怎么实现的

Linux 操作系统内核之中,为资源隔离提供了三种技术:namespace、cgroup、chroot

namespace

2002 年从 Linux 2.4.19 开始出现的,和编程语言里的 namespace 有点类似

它可以创建出独立的文件系统、主机名、进程号、网络等资源空间,相当于给进程盖了一间小板房,这样就实现了系统全局资源和进程局部资源的隔离

cgroup

2008 年从 Linux 2.6.24 开始出现的,它的全称是 Linux Control Group

用来实现对进程的 CPU、内存等资源的优先级和配额限制,相当于给进程的小板房加了一个天花板

chroot

早在 1979 年的 UNIX V7 就已经出现了

它可以更改进程的根目录,也就是限制访问文件系统,相当于给进程的小板房铺上了地砖

综合运用这三种技术,一个具有完善隔离特性的容器就出现了,进程可以搬到这个隔离空间内了。

总结

  1. 容器就是操作系统里一个特殊的“沙盒”环境,里面运行的进程只能看到受限的信息,与外部系统实现了隔离。
  2. 容器隔离的目的是为了系统安全,限制了进程能够访问的各种资源。
  3. 相比虚拟机技术,容器更加轻巧、更加高效,消耗的系统资源非常少,在云计算时代极具优势。
  4. 容器的基本实现技术是 Linux 系统里的 namespace、cgroup、chroot。

《极客时间-Kubernetes入门实战课》学习笔记 Day3 极客课程分享