docker依赖的linux内核特性,dockerlinux内核

发布时间:2019-12-15 13:13    浏览次数 :

[返回]

docker容器能力


Namespaces和Control groups带给了容器下面的能力:

文件系统的隔离:每个容器都有自己的root文件系统 进程隔离:每个容器都运行在自己的进程环境中 网络隔离:每个容器间虚拟网络接口和ip地址都是分开的 资源隔离和分组:Control groups可以将CPU和内存之类的资源独立分配给每个docker容器

docker依赖的内核特性 docker依赖于Linux的两个内核特性: Namespaces:命名空间 Control groups(cgroups):...

  • 资源限制  比如Memory子系统可以为进程组设定一个内存使用的上限,一旦进程组使用的内存达到的上限,在申请内存就会发出Out of Memory的消息
  • 优先级设定 可以设定哪些进程组使用更大的CPU或者是磁盘IO 的资源
  • 资源计量 可以计算进程组使用了多少系统资源,尤其在计费系统中这点非常重要
  • 资源控制 可以将进程组挂起和恢复

docker依赖的内核特性


docker依赖于Linux的两个内核特性:

Namespaces:命名空间 Control groups(cgroups):控制组

理解这两个特性,能够更好的帮助我们理解docker的资源分配和管理

Control groups

这是Linux内核提供的一种可以限制,记录,隔离物理进程组的机制。他提供了以下功能:

资源限制 优先级设定 资源计量 资源控制

    封装 ----->  代码隔离

docker依赖的linux内核特性,dockerlinux内核

Namespaces 命名空间

Namespaces

命名空间提供了一种系统资源的隔离,包括了文件系统、网络、进程等。docker有5种命名空间:

PID:进程隔离 NET:网络管理接口 IPC:管理跨进程通信访问 MNT:管理挂载点 UTS:隔离内核和版本标识

 

这两个特性带给了Docker容器的哪些能力呢?

  实际上Linux系统内核实现命名空间的目的之一就是为了实现轻量级虚拟化服务,也就是我们说的容器。

  

 

  很多编程语言都包含有命名空间的概念,可以认为命名空间是一种封装的概念,编程中的封装目的是实现代码的隔离。

  • PID (Process ID) 进程隔离
  • NET (Network) 管理网络接口
  • IPC (InterProcess Communication) 管理跨进程通信的访问
  • MNT (Mount) 管理挂载点也就是文件系统
  • UTS (Unix Timesharing System) 隔离内核和版本标识

Control groups 控制组

  这些隔离的资源是如何管理起来的呢,这就需要用到 Control groups

    系统资源的隔离

下一篇:没有了