订阅
纠错
加入自媒体

关于容器和容器运行时那些事

2020-08-11 09:55
EAWorld
关注

前言:

容器,容器编排,微服务,云原生,这些无疑都是当下软件开发领域里面最热门的术语。容器技术的出现并迅速的广泛应用于软件开发的各个领域里,主要的原因是容器技术革命性的改变了软件开发和部署的基本方式。作为一个架构师,了解容器技术是非常重要的一个话题,我们今天就来聊聊它。

目录:

1、Chroot2、容器 VS. 虚机

3、命名空间 Namespace

4、控制组 CGroup

5、ContainerD

容器技术是一种虚拟化技术,也就是我们常常说的“软件定义XXX”。在容器之前被广泛应用的是虚拟机技术,也就是软件定义的硬件。代表产品就是VMWare。我早年在EMC工作的时候,公司常常提起收购VMWare是多么多么英明的一项决策,那个时候虚拟机技术真的很火。例如软件模拟硬件,用户可以很方便的在自己的主机上运行不用的硬件和操作系统,并且可以方便的把整个系统的快照作为文件迁移,真的非常方便。

但是虚拟机需要模拟整个的硬件,它的开销是非常大的。内存,CPU和磁盘空间都是独占的。在系统架构的层面,虚拟机技术仍然非常有用,但是对日常的开发工作来说,虚拟机技术就太重了。

从软件开发和部署的角度来看,我们希望有一个这样的虚拟化技术:

能够隔离CPU,内存,磁盘,网络等资源

能够控制资源使用的量和优先级

能够运行独立的操作系统

比较轻量级的系统开销

比较方便的管理功能

在Unix/Linux世界,我们第一个想到的类似的东西是Chroot。

1.Chroot

Chroot是在unix系统的一个操作,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。由chroot创造出的那个根目录,叫做“chroot jail”(chroot jail,或chroot prison)。

只有root用户可以执行chroot。大多数Unix系统都没有以完全文件系统为导向,以即给可能通过网络和过程控制,通过系统调用接口来提供一个破坏chroot的程序。

在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

增加了系统的安全性,限制了用户的权力;在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

建立一个与原系统隔离的系统目录结构,方便用户的开发;使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

但是Chroot并不能满足我们之前提到的哪些需求,chroot的隔离功能非常有限,chroot的机制本身不是为限制资源的使用而设计,如I/O,带宽,磁盘空间或CPU时间。

为了实现我们之前提到的那些需求,我们需要一种更为强大的虚拟化技术,容器也就随之发展起来。

1  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    云计算 猎头职位 更多
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号