绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Docker 容器相关技术简介
2019-08-27 16:42:07

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的资源大小和优先级。

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

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

 

上面是 namespaces和 cgroups。

下面讲

Docker容器的能力

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

分享好友

分享这个小栈给你的朋友们,一起进步吧。

唠唠云原生
创建时间:2020-05-11 11:26:03
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。 Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~