容器技术简介
所属分类 architecture
浏览量 705
容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离,可方便的把这个沙盒转移到其它宿主机上。
本质上,它是一个特殊的进程 ,通过名称空间(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本地测试环境搭建工具
云原生技术发展历程