linux内核中用来对共享资源进行隔离,十五、docker的隔离namespace和资源限制cgroup...

pid命名空间

不同用户的进程就是通过pid命名空间隔离开的,且不同命名空间中可以有相同pid。所有的 LXC进程在Docker中的父进程为Docker进程,每个LXC进程具有不同的命名空间。同时由 允许嵌套,因此可以很方便的实现嵌套的Docker容器。

net命名空间

有了pid命名空间,每个命名空间中的pid能够相互隔离,但是网络端口还是共享host的端口。网络隔离是通过net命名空间实现的,每个net命名空间有独立的网络设备,IP地址, 路由表,/proc/net目录。这样每个容器的网络就能隔离开来。Docker默认采用veth的方式,将容器中的虚拟网卡同host上的一个Docker网桥docker0连接在一起。

ipc命名空间

容器中进程交互还是采用了Linux常见的进程间交互方法(interprocess communication-IPC), 包括信号量、消息队列和共享内存等。然而同VM不同的是,容器的进程间交互实际上还是host上具有相同pid命名空间中的进程间交互,因此需要在IPC资源申请时加入命名空间信息,每个IPC资源有一个唯一的32位id。

mount命名空间

类似chroot,将一个进程放到一个特定的目录执行。mount命名空间允许不同命名空间的进程看到的文件结构不同,这样每个命名空间中的进程所看到的文件目录就被隔离开了。同chroot不同,每个命名空间中的容器在proc/mounts的信息只包含所在命名空间的mount point。

uts 命名空间

UTS("UNIX Time-sharing System")命名空间允许每个容器拥有独立的hostname和domain name,使其在网络上可以被视作一个独立的节点而非主机上的一个进程。

user命名空间

每个容器可以有不同的用户和组id, 也就是说可以在容器内用容器内部的用户执行程序而非主机上的用户。

二、什么是cgroup

控制组(cgroups是Linux内核的一个特性,主要用来对共享资源进行隔离、限制、审计 等。只有能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。

CGroups: 所有的任务就是运行在系统中的一个进程,而 CGroups 以某种标准讲一组进程为目标进行资源分配和控制。例如CPU、内存、带宽等,并且可以动态配置。

CGroups主要功能:

• 限制进程组使用的资源数量( Resource limitation ):可以为进程组设定资源使用上限,例如内存

• 进程组优先级控制( Prioritization ):,可以为进程组分配特定CPU、磁盘IO吞吐量

• 记录进程组使用的资源数量( Accounting ):例如使用记录某个进程组使用的CPU时间

• 进程组控制( Control ):可以将进程组挂起和恢复

查看cgroups可控制的资源

• blkio :对快设备的IO进行限制。

• cpu:限制CPU时间片的分配,与cpuacct挂载同一目录。

• cpuacct :生成cgroup中的任务占用CPU资源的报告,与cpu挂载同一目录。

• cpuset :给cgroup中的任务分配独立的CPU(多核处理器)和内存节点。

• devices :允许或者拒绝 cgroup 中的任务访问设备。

• freezer :暂停/恢复 cgroup 中的任务。

• hugetlb :限制使用的内存页数量。

• memory :对cgroup 中任务的可用内存进行限制,并自动生成资源占用报告。

• net_cls :使用等级识别符(classid)标记网络数据包,这让 Linux 流量控制程序(tc)可以识别来自特定从cgroup 任务的数据包,并进行网络限制。

• net_prio:允许基于cgroup设置网络流量的优先级。

• perf_event:允许使用perf工具来监控cgroup。

• pids:限制任务的数量。

容器实际资源限制位置: /sys/fs/cgroup//docker/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值