首页 > 代码库 > docker基础理论知识

docker基础理论知识

Docker实现的两个基本理论知识

一、NameSpace:内核的实现技术,隔离机制。

●PID NameSpace:(隔离pid)每一个用户空间都有一个唯一的PID号,彼此之间不会干扰。从Linux2.6.24内核版本开始引入的,是一种最新的技术。

●Network NameSpace:真正起源于Linux2.6.29,实现与网络用户隔离的。(网络设备、网络线、端口资源隔离)

●User NameSpace:实现用户和用户组资源隔离的。Linux3.8

●IPC NameSpace: 进程间通信机制。多个用户之间的通信(信号量、消息队列和共享内存)也是隔离的。Linux 2.6.19

●UTC NameSpace: Linux 2.6.19 主机名和域名的隔离。

●Mount NameSpace: 实现挂载文件系统隔离的。Linux2.4.19


实现容器技术所需的API:

clone()克隆是实现线程的系统调用。

sents() 实现某个进程加入到某个NameSpace的。

unshare()非共享机制。进程脱离某个NameSpace。


二、CGroup: Linux Control Group  Linux2.6.24被收入到内核中去的。

内核级别,限制、控制与一个进程组群的资源;NameSpace实现上述6种隔离,CGroup实现在每个用户空间配配比资源。如每个用户空间之间的CPU个数,内存大小,以及硬件网络IO等


资源限制:CPU,内存,IO

功能:

      Resouce limitation:资源限制;

      Prioritization:优先级控制;

      Accounting:审计和统计,主要为计费;

      Control:挂起进程,恢复进程;


 yum install libcgroup-tools

lssbusys -m

[root@docker-vm ~]# lssubsys  -m
cpuset /sys/fs/cgroup/cpuset
cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls /sys/fs/cgroup/net_cls
blkio /sys/fs/cgroup/blkio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb

CGroup的子系统(subsystem):

blkio:设定块设备的IO限制;(主要是磁盘)

cpu:     设定CPU的限制;

cpuacct: 报告cgroup中所使用的CPU资源;

cpuset:为cgroup中的任务分配CPU和内存资源;

memory:设定内存的使用限制;

device:控制cgroup中的任务对设备的访问;

freezer:挂起或恢复cgroup中的任务;

net_cls:(classid),使用等级级别标识符来标记网络数据包,以实现基于tc完成对不同的cgroup中产生的流量控制;

perf_event:使用后使cgroup中的任务可以进行统一的性能测试;

hugetlb:对HugeTLB系统进行限制;


CGroups中的术语:

task(任务):进程或线程

cgroup:一个独立的资源控制单位,可以包含一个或多个子系统;

subsystem:子系统

hierarchy:层级


三、AUFS: UnionFS 联合文件系统

       UnioFS:把不同的物理位置的目录合并到同一个目录中。实现机制是叠加。类似于winpe,LVM

       Another UFS.Alternative UFS,Adanced UFS (一个日本人写的)但是没有进入Linux内核中。

       Docker是基于AUFS上的,在生产环境中没有AUFS的Docker是不建议使用的。centos不支持AUFS.


Device mapper: 类似于AUFS

       Linux2.6内核引入的最重要的技术之一,用于在内核中支持逻辑卷管理的通用设备映射机制;

      Mapped Device

      Mapping Table

      Target Device

不建议在生产环境中应用。


Docker:

2013,GO  Apache 2.0,dotCloud

基于C/S架构

DockerClinet


本文出自 “奋斗中的老兵” 博客,请务必保留此出处http://jiaxu201.blog.51cto.com/4569604/1867316

docker基础理论知识