998yty 发表于 2016-10-31 10:11:40

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 GroupLinux2.6.24被收入到内核中去的。
内核级别,限制、控制与一个进程组群的资源;NameSpace实现上述6种隔离,CGroup实现在每个用户空间配配比资源。如每个用户空间之间的CPU个数,内存大小,以及硬件网络IO等

资源限制:CPU,内存,IO
功能:
      Resouce limitation:资源限制;
      Prioritization:优先级控制;
      Accounting:审计和统计,主要为计费;
      Control:挂起进程,恢复进程;

yum install libcgroup-tools
lssbusys -m

1
2
3
4
5
6
7
8
9
10
# 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,GOApache 2.0,dotCloud
基于C/S架构
DockerClinet


dxq6888 发表于 2016-11-1 08:33:20

学习了
页: [1]
查看完整版本: docker基础理论知识