一. 虚拟化技术: vm与container
二. docker 支撑的技术框架
1. 名称空间namespace
内核隔离,环境隔离
pid namespace: linux 2.6.24 pid隔离
network namespace: linux 2.6.29 网络设备,网络栈,端口等网络资源隔离
user namespace: linux 3.8 用户和用户组资源隔离
ipc namespace: linux 2.6.19 信号量,消息队列和共享内存的隔离
uts namespace: linux 2.6.19 主机名和域名的隔离
mount namespace: linux 2.4.19 挂载点(文件系统)隔离
2. cgroup
linux control group 控制组, linux2.6.24
内核级别,限制,控制与一个进程组群的资源;
资源:cpu ,内存, io
功能:
resource limitation:资源限制
prioritization:优先级控制
accounting:审计和统计,主要为计费
control:挂起进程,恢复进程
/sys/fs/cgroup
centos 7:
mount 可以看到很多cgroup的挂载信息
lssubsys -m
cgroup的子系统:
blkio:设定块设备的io限制
cpu:设定cpu的限制
cpuacct:报告cgroup中所使用cpu资源
cpuset:为cgroup中的任务分配cpu和内存资源
memory:设定内存的使用限制
devices:控制cgroup中的任务对设备的访问
freezer:挂起或者恢复cgroup中的任务
net_cls:(classid),使用等级级别标识符来标记网络数据包,以实现基于tc完成对不同的cgroup中产生的流量的控制
tc命令 tc -h
perf_event:性能控制相关的事件,对性能进行追踪和统计
hugetlb: 对hugetlb系统进行限制;
cgroup术语:
task(任务):进程或者线程
cgroup:一个独立的资源控制单位,可以包含一个或多个子系统
subsystem:(子系统)
hierarchy:层级
aufs: unionfs
unionfs: 把不同物理位置的目录合并到同一个目录中。
aufs:another ufs, alternative ufs, advanced ufs
device mapper:
用于在内核中支持逻辑卷管理的通用设备映射机制
mapped device
mapping table
target device
docker:
2013, go, apache 2.0 , dotcloud company
c/s 架构:
docker client:发起docker的相关请求
docker server:容器运行的节点
核心组件:
docker client:docker的客户但工具,是用户使用docker的主要接口,docker client 与docker daemon 通信,并将结果返回用户
docker daemon:运行与宿主机上,docker守护进程,用户可通过docker client与其交互;
image:镜像文件(只读),用来创建container,一个镜像可以运行多个container;镜像文件可以通过docker file创建,也可以从docker hub下载
repository
公共仓库:docker hub/registry
私有仓库
docker container:docker的运行实例,容器是一个隔离环境
另外两个重要组件:
docker link;
docker volume;
阅读(1795) | 评论(0) | 转发(0) |