Docker简单介绍

Docker 是一个开源项目,它基于 Google 公司推出的 Go 语言实现。

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。

Dockers 是基于LXC(基于容器的操做系统层级的虚拟化技术)技术之上构建的容器引擎。LXC容器技术将操作系统抽象到了一个新的高度。直接从init启动,省去了硬件自检、grub引导、加载内核、加载驱动等传统启动项目,因此启动飞速。

Docker是通过内核虚拟化技术,来提供容器的资源隔离与安全保障,没有额外的系统开销。单进程 一个容器只能启动一个进程。

C/S结构 客户端和服务端结构

 

docker组件

镜像 容器(启动的实例) 仓库

三大核心理念

构建  运输  执行

背后的内核知识
docker本质上就是宿主机上的一个进程,docker通过namespace实现了资源隔离,通过cgroup实现了资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作。

namespace介绍

实际上,Linux内核实现namespace的一个主要目的,就是实现轻量级虚拟化(容器)服务。在同一个namespace下进程间可以感受到彼此之间的变化,对外界进程一无所知。这样就可以让容器中进程产生错觉,仿佛自己置身于一个独立的系统环境中
namespace的API包括clone()、sents()、以及unshare()还有/prox下的部分文件

 

CGroup 介绍
CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物理资源 (如 cpu memory i/o 等等) 的机制。2007年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者Google 的 Paul Menage。CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段。

CGroup 功能及组成
CGroup 是将任意进程进行分组化管理的 Linux 内核功能。CGroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为 CGroup 子系统或控制器。CGroup 子系统有控制内存的 Memory 控制器、控制进程调度的 CPU 控制器等。运行中的内核可以使用的 Cgroup 子系统由/proc/cgroup 来确认。

CGroup 提供了一个 CGroup 虚拟文件系统,作为进行分组管理和各子系统设置的用户接口。要使用 CGroup,必须挂载 CGroup 文件系统。这时通过挂载选项指定使用哪个子系统。

cgroup的特点如下:
cgroup的API以一个伪文件系统的实现方式,用户态的程序可以通过文件操作实现
cgroup的组织管理
cgroup的组织管理操作单元可以细粒度到线程级别,另外用户可以创建和销毁
cgroup,从而实现资源再分配和再利用所有资源管理的功能都以子系统的方式实现,接口统一子任务创建之初与其父任务处于同一个cgroup的控制组

cgroup四大功能:
资源限制:可以对任务使用的资源总额进行限制
优先级分配:通过分配的CPU时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级
资源统计:可以统计系统的资源使用量,如CPU时长、内存用量等
任务控制:cgroup可以对任务执行挂起、恢复等操作

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值