码迷,mamicode.com
首页 > 其他好文 > 详细

docker 简介

时间:2020-07-07 15:08:22      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:容器   作用   文件   ace   blkio   进程组   cgroups   docker   特殊   

容器是一种沙盒技术。将应用部署到沙盒中,应用之间有了边界,不至于彼此之间相互干扰。

  容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。

  对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法。

Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。这么一折腾,进程就真的被“装”在了一个与世隔绝的房间里

NameSpace

  Namespace 技术实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容

  Docker运行时,本质上还是宿主机上的一个进程。不过在创建进程时,通过 NameSpace 机制将这个进程进行了隔离,它只能看见我们想让它看见的视图。
  比如PID,Docker里面的进程PID就是1,但是在宿主机上,它的进程pid并没有改变,通过NameSpace 机制还可以实现Mount,UTS,IPC,NetWork,User 等信息的隔离效果。
  让进程看见指定的进程,挂载点,网络,用户等信息。

  镜像只是提供了一套镜像文件系统中的各种文件,而各种内核相关的模块或者特性支持,完全依赖于宿主机。

所以,Docker 容器这个听起来玄而又玄的概念,实际上是在创建容器进程时,指定了这个进程所需要启用的一组 Namespace 参数。这样,容器就只能“看”到当前 Namespace 所限定的资源、文件、设备、状态,或者配置。而对于宿主机以及其他不相关的程序,它就完全看不到了。

  容器只是一种特殊的进程。

Cgroups

  Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。
  它就是一个子系统目录加上一组资源限制文件的组合,实现对进程资源的限制。

  blkio,为???块???设???备???设???定???I/O 限???制,一般用于磁盘等设备;
  cpuset,为进程分配单独的 CPU 核和对应的内存节点;
  memory,为进程设定内存使用的限制

docker 简介

标签:容器   作用   文件   ace   blkio   进程组   cgroups   docker   特殊   

原文地址:https://www.cnblogs.com/virgosnail/p/13260503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!