第3章 docker 基本原理知识

来源:互联网 发布:2017淘宝卖什么成本低 编辑:程序博客网 时间:2024/06/08 00:24

3.1 linux 的namespace 机制 ---"容器模型" --->管理虚拟化的工具

linux 的namespace 机制是提供一种资源隔离的方案,PID/IPC/Network 不再是全局的,而是某一个namespace 里面的。在同一个namespace 的能感受到其他pid 的变化,但是对其他的namespace 是透明的,不会受到任何影响,也感受不到其他namespace 里面的变化。这样namespace 机制就提供了一个资源隔离的方案;为容器的概念打好了一个良好的基础.

  • 通过调用namespaceAPI 可以创建资源隔离的shell 环境,也就是一个”容器"

3.2 linux 的cgroups 机制 --"虚拟化"

cgroups 全称是Control Groups “控制组“,通俗的讲就是把进程放到一个组里面统一控制。通俗的讲就是cgroups 可以限制、记录、隔离进程组使用的物理资源(包括CPU、mem、IO等);为容器实现虚拟化提供了保证,是构建Docker 等一系列虚拟化管理工具的基石。

cgroups 的作用:
  • 资源限制:cgroups 可以对进程组(一个容器内可以跑多个进程)使用的资源总额进行限制,如果进程组运行时占用的内存找过了设置的上限,就会触发OOM;当进程启动时分配的内就超过上限,那进程直接启动失败
  • 优先级分配:控制进程运行的优先级,可以根据不同的优先级给就进程分配cpu和IO带宽等资源
  • 资源统计:cgroup是可以统计系统的资源使用量,比如cpu 使用时长、内存用量等,这个功能非常适用于计费
  • 进程控制:cgroups 可以对进程组里面的进程执行挂起、恢复等操作

3.3 容器跟 namespace和cgroups 的关系

容器有2个核心一个是虚拟化的隔离环境,一个是持续交付、集成;
虚拟化的隔离环境就是通过namespace和cgroups 2个基础设施来实现的;namespace 是提供一个“容器”,cgroups 是进行资源分配、隔离、统计并维护容器里面的进程状态。
所以namespace 和cgoups 是支持容器技术的2个核心技术.

0 0
原创粉丝点击