知识点

作者: 庞志辉信德it | 来源:发表于2021-05-03 22:41 被阅读0次


    知识点

    容器本身没有价值,有价值的是“容器编排”。

    容器,其实是一种特殊的进程而已。

    Linux 容器的具体实现方式

    一个“容器”,实际上是一个由 Linux Namespace、Linux Cgroups 和 rootfs 三种技术构建出来的进程的隔离环境。

    Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;修改进程视图的主要方法

    Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。制造约束的主要手段

    一组联合挂载在 /var/lib/docker/aufs/mnt 上的rootfs,这一部分我们称为“容器镜像”(Container Image),是容器的静态视图;一个由 Namespace+Cgroups 构成的隔离环境,这一部分我们称为“容器运行时”(Container Runtime),是容器的动态视图。

    namespace机制

    在容器中看到只有自己一个进程

    但是这个进程其实是在宿主机上的 只不过是一个独立的namespace

    定义了5个命名空间结构体,多个进程可以使用同一个namespace

    UTS: 运行内核的名称、版本、底层体系结构类型等信息(UNIX Timesharing System)

    IPC: 与进程间通信(IPC)有关

    MNT: 已经装载的文件系统的视图Mount Namespace,用于让被隔离进程只看到当前 Namespace 里的挂载点信息;

    PID:有关进程ID的信息

    NET:网络相关的命名空间参数Network Namespace,用于让被隔离进程看到当前 Namespace 里的网络设备和配置。

    在 Linux 内核中,有很多资源和对象是不能被 Namespace 化的,最典型的例子就是:时间

    cgroup技术

    Linux Cgroups 就是 Linux 内核中用来为进程设置资源限制的一个重要功能。

    Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。

    此外,Cgroups 还能够对进程进行优先级设置、审计,以及将进程挂起和恢复等操作

    一个正在运行的 Docker 容器,其实就是一个启用了多个 Linux Namespace 的应用进程,而这个进程能够使用的资源量,则受 Cgroups 配置的限制。这也是容器技术中一个非常重要的概念,即:容器是一个“单进程”模型。

    centos ubuntu等本来就是用的相同的linux内核,但是其他操作系统的一些可执行文件等等就是各个linux发行版不同的地方了。

    相关文章

      网友评论

          本文标题:知识点

          本文链接:https://www.haomeiwen.com/subject/gquqdltx.html