容器核心技术之----------底层技术

cgroup(实现资源限制)

 cgroup全称control group。linux操作系统通过cgroup可以设置进程使用CPU、内存和IO资源的限制。--cpu-shares、-m、--device-write-bps实际上就是在配置cgroup。

 在/sys/fs/cgroup/cpu/docker目录中,linux会为每个容器创建一个cgroup目录,以容器的长ID命名的目录中包含所有与cpu相关的cgroup配置,文件cpu.shares保存的就是--cpu-shares的配置,同样的,/sys/fs/cgroup/memory/docker和/sys/fs/cgroup/blkio/docker中保存的就是内存以及block io的cgroup配置

 

namespace(实现资源隔离)

 在每个容器中,都有文件系统、网卡等资源,这些资源看上去都是容器自己的。拿容器来说,每个容器都会认为自己有一块独立的网卡。即使host上只有一块物理网卡。这种方式非常好,它使得容器更像一个独立的计算机

 linux实现这种方式的技术是namespace。namespace管理着host中全局唯一的资源。可以让每个容器都觉得只有自己在使用它。换句话说,namespace实现了容器间资源的隔离

 Linux使用了6种namespace,分别对应6种资源:mount、uts、ipc、pid、network和user,下面分别讨论

 1.mount namespace

 mount namespace让容器看上去拥有整个系统文件,容器有自己的/目录,可执行mount和umount命令。这些操作只在当前容器中生效,不会影响到host和其他容器

 2.uts namespace

 简单地说,uts namespace让容器拥有自己的hostname。默认情况下,容器的hostname是它的短ID,可以通过-h或--hostname参数设置

 3.ipc namespace

 IPC namespace让容器拥有自己的共享内存和信号量来实现进程间的通信,而不会与host和其它容器的IPC混在一起

 4.pid namespace

 容器在host中以进程的方式运行。而且进程的PID不同于host中对应进程的pid。也就是说:容器拥有一套自己的PID,这就是PID namespace提供的功能

 5.network namespace

 network namespace让容器拥有自己独立的网卡、IP、路由等资源

 6.user namespace

 user namespace让容器能够管理自己的用户,host不能看到容器中创建的用户

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值