美文网首页容器云Docker的那些事儿
Docker的那些事儿—Docker使用的核心底层技术(6)

Docker的那些事儿—Docker使用的核心底层技术(6)

作者: sjyu_eadd | 来源:发表于2018-03-01 19:12 被阅读4次


    上一篇:Docker的那些事儿—Docker使用的核心底层技术(5)


    Control groups

    Control groups(Cgroups)中文称为控制组。Docker利用Cgroups实现了对资源的配额和度量。Cgroups可以限制CPU、内存、磁盘读写速率、网络带宽等系统资源。Linux使用文件系统来实现Cgroups,我们可以直接使用下面的命令查看当前的Cgroups中有哪些子系统:

    以下是每个子系统的说明:

    Blkio:这个子系统设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。

    Cpu:这个子系统使用调度程序为cgroup任务提供cpu的访问。

    Cpuacct:产生cgroup任务的cpu资源报告。

    Cpuset:如果是多核的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。

    Devices:允许或拒绝cgroup任务对设备的访问。

    Freezer:暂停和恢复cgroup任务。

    Memory:设置每个cgroup的内存限制以及产生内存资源报告。

    net_cls:标记每个网络包以供cgroup方便使用。

    Cgroup的使用非常简单,如果想要创建一个新的cgroup,只需要在想要分配或者限制资源的子系统下面创建一个新的文件夹,然后cgroup会在这个文件夹下自创建很多内容。当然如果在Linux上安装了Docker,会发现所有子系统的目录下都有一个名为 Docker 的文件夹:

    或许你可能发现存在两个文件夹:

    3498d766e1axxx和7078ee1f4cb79xxx,这两个文件夹名字其实就是我们之前启动的两个容器的ID号。Cgroup是层级结构,父子继承关系,当你打开上述两个文件夹可以看到拥有类似的目录结构。

    另外,每个子系统下面都有一个tasks文件,这个文件记录了所有加入这个资源组的进程号。

    这些进程号恰巧是PID=2173的docker-containerd-shim进程的所有子进程,这说明和这个容器7078ee1f4cbxx相关的进程都被限制在这个以容器ID为名的子系统中。


    下一篇:Docker的那些事儿—Docker使用的核心底层技术(7)


    相关文章

      网友评论

        本文标题:Docker的那些事儿—Docker使用的核心底层技术(6)

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