Docker学习笔记2

CGroups(Control Groups) 控制组:

        用于实现容器的资源隔离。

        可对进程做资源隔离。CPU和内存。

        九大子系统。

        应用案例。

扩展:

        主机虚拟化实现资源隔离的方式

                使用Hypervisor中的VMM实现资源隔离

        PAM:

                用户认证:

                        ssh、su、sudo、samba、ftp、gdm、kdm。

                        应用系统自带的认证系统。

                        apache认证方式。

                资源限制:

                        ulimit命令:提高资源的限制量,仅针对用户进行限制。

                        文件描述符来限制文件数量。ulimit -n 10240

      

控制组:

控制组CGroups是Linux内核的一个特征,主要用来对共享资源进行隔离、限制、审计等。只有能控制分配到容器的资源,才能避免多个容器同时运行时对宿主机系统的资源竞争。控制组可以提供对容器的CPU、内存、磁盘、IO等资源进行限制和计费管理。控制组的设计目标是为不同的应用情况提供统一的接口,从控制单一进程(比如nice工具)到系统级虚拟化(包括OpenVZ、Linux-Server、LXC等)

具体来看,控制组提供:

资源限制:可以将组设置为不超过设定的内存限制。比如:内存子系统可以为进程组设定一个内存使用上限,一旦进程组使用的内存达到限额再申请内存,就会出现Out of Memory警告。

优先级:通过优先级让一些组优先得到更多的CPU等资源。

资源审计:用来统计系统实际上把多少资源用到适合的目的上,可以使用cpuacct子系统记录某个进程组使用的CPU时间。

隔离:为组隔离命名空间,这样一个组不会看到另一个组的进程、网络连接和文件系统。

控制:挂起、恢复和重启等操作。

安装docker之后,用户可以在/sys/fs/cgroup/memory/docker/目录下看到对Docker组应用的各种限制项,包括:

cd /sys/fs/cgroup/memory/docker

ls

用户可以通过修改这些文件值来控制组限制Docker应用资源。

cgroups将各种子系统定义为资源,命名为controller。

可配额/可度量-Controller  Groups(cgroups):

cgroups实现了对资源的配额和度量九大子系统的资源。

1、blkio:限制每个块设备的输入输出控制。例如:磁盘、光盘以及usb。

2、cpu:限制使用CPU比例。

3、cpuacct:产生cgroup任务的cpu资源报告。

4、cpuset:多核心的cpu时为cgroup任务分配单独的cpu和内核。

5、devices:允许和拒绝对设备的访问。

6、freezer:暂停和恢复cgroup的任务。

7、memory:设置内存限制以及产生内存资源报告。

8、net_cls: 标记每个网络包。

9、ns:名称命名空间。

你可能感兴趣的:(Docker容器,docker)