首页  

容器技术简介     所属分类 architecture 浏览量 254
容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离,可方便的把这个沙盒转移到其它宿主机上。
本质上,它是一个特殊的进程 ,通过名称空间(Namespace)、控制组(Control groups)、chroot 技术把资源、文件、设备、状态和配置划分到一个独立的空间。
可理解为一个装应用软件的箱子,箱子里面有软件运行所需的依赖库和配置 ,可以把这个箱子搬到任何机器上,且不影响里面软件的运行。

Linux Container(LXC)是一种内核轻量级的操作系统层虚拟化技术

Namespace
每个运行的容器都有自己的名称空间
不同名字空间中可以有相同的pid
PID  Mount IPC Network UTS(UNIX Time-sharing System) User

控制组(Control groups)
Cgroups是Linux内核提供的一种可以限制、记录、隔离进程组的物理资源机制
在Linux的/sys/fs/cgroup目录中,有cpu、memory、devices、net_cls等子目录
可以根据需要修改相应的配置文件来设置某个进程ID对物理资源的最大使用率

change to root
改变一个程序运行时参考的根目录位置,让不同容器在不同的虚拟根目录下工作,从而相互隔离

容器与虚拟机


虽然现在提到容器,大家就想到docker,但事实上

容器 从1979年的Chroot Jail开始
docker 2013年 推出第一个版本 


docker 镜像与容器
镜像是文件,是一个只读的模板,一个独立的文件系统,里面包含运行容器所需的数据,可以用来创建新的容器
容器是基于镜像创建的进程,容器中的进程依赖于镜像中的文件,容器具有写的功能,可以根据需要改写里面的软件、配置等,并可以保存为新的镜像。

2015年,由Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的OCI(Open Container Initiative)组织成立了
并于2016年4月推出了第一个开放容器标准 
标准主要包括runtime运行时标准和image镜像标准


容器运行时标准 (runtime spec)
creating 使用 create 命令创建容器
created  容器创建出来,但是还没有运行,表示镜像和配置没有错误,容器能够运行在当前平台 
running  容器的运行状态,里面的进程处于 up 状态,正在执行用户设定的任务 
stopped  容器运行完成,或者运行出错,或者 stop 命令之后,容器处于暂停状态
         这个状态,容器还有很多信息保存在平台中,并没有完全被删除

容器镜像标准(image spec)
文件系统  以 layer 保存的文件系统,每个 layer 保存了和上层之间变化的部分,layer 应该保存哪些文件,怎么表示增加、修改和删除的文件等
config 文件 保存了文件系统的层级信息(每个层级的 hash 值,以及历史信息),以及容器运行时需要的一些信息(比如环境变量、工作目录、命令参数、mount 列表),指定了镜像在某个特定平台和系统的配置。比较接近使用 docker inspect image_id 看到的内容 
manifest 文件  镜像的 config 文件索引,有哪些 layer,额外的 annotation 信息,manifest 文件中保存了很多和当前平台有关的信息
index 文件  可选的文件,指向不同平台的 manifest 文件,这个文件能保证一个镜像可以跨平台使用,每个平台拥有不同的 manifest 文件,使用 index 作为索引

上一篇     下一篇
MYSQL binlog_format

ElasticJob 简介

git 本地创建新分支并push

k8s架构简介

k8s本地测试环境搭建工具

云原生技术发展历程