Chinaunix首页 | 论坛 | 博客
  • 博客访问: 877891
  • 博文数量: 339
  • 博客积分: 3151
  • 博客等级: 中校
  • 技术积分: 3425
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-10 14:47
文章分类

全部博文(339)

文章存档

2023年(43)

2022年(44)

2021年(3)

2020年(13)

2019年(39)

2018年(25)

2015年(2)

2014年(18)

2013年(12)

2012年(48)

2011年(79)

2010年(13)

分类: LINUX

2019-09-09 09:35:54

Docker容器相关技术简介
    Docker依赖的linux内核特性
        Namespaces 命名空间
        Control groups (cgroups)

很多编程语言都有封装的概念,其实就是代码的隔离,在操作系统中命名空间提供的是什么呢? 提供的是系统资源的隔离,系统资源包括了进程,文件系统,网络等等。 而linux之所以使用命名空间就是为了实现轻量化服务,也就是我们说的容器。 
在同一个命名空间下的进程能感知彼此的变化,而对其他命名空间下的进程一无所知。 达到了独立和隔离的目的,仿佛世界就此一人。就好像微信登录界面上那个小人。天上天下only you. 
从docker文档来看,使用了5种命名空间。 

Namespaces 命名空间

PID (Process id)  进程隔离

NET (Network) 管理网络接口

IPC (InterProcess Communication) 管理跨进程通信的访问

MNT (Mount) 管理挂载点,文件系统相关的隔离

UTS (Unix Timesharing System ) 隔离内核和版本的标识


那么这些隔离的资源是如何管理起来的呢?

用到control groups 控制组,他是linux内核提供的可以控制限制记录隔离物理资源的机制,最初由googole工程师提出,然后在linux内核2.6.4版本的时候整合进来, 可以说cgroups就是了实现容器而生的。没有cgroups就没有容器的今天。

Cgroups提供了哪些功能呢?

首先是 资源限制,比如memory内存组可以为进程设置使用的上限,如果进程使用的内存达到了上限,那么再申请内存,就会报错,out of memory的报错。

第二是 优先级设定,设定哪个进程使用cpu,磁盘IO的资源大小和优先级。

第三是 资源计量, 进程使用了多少资源,尤其在计费系统中更加重要。

第四是 资源控制,可以将进程组挂起和恢复。


上面是 namespacescgroups

下面讲

Docker容器的能力

文件系统隔离: 每隔容器都有自己的root文件系统。




阅读(720) | 评论(0) | 转发(0) |
0

上一篇:如何查看美国街景地图

下一篇:Go- zhizhen

给主人留下些什么吧!~~