1、什么是容器?
google在它的词条中这样定义:
容器是一种基础工具;泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于
容纳、储存、运输物品;物体可以被放置在容器中,而容器则可以保护内容物;
人类使用容器的历史至少有十万年,甚至可能有数百万年的历史;
而在计算机领域:
容器(container)是指是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
2、容器和虚拟化的区别
虚拟化使得多个操作系统可同时运行在单个系统上
容器则可共享同一个操作系统的内核,将应用程序与系统其它部分隔离开
这意味着什么?首先,让多个操作系统在单个虚拟机监控程序上运行以实现虚拟化,并不
能达成和使用容器同等的轻量级效果。事实上,在仅拥有容量有限的有限资源时,您需要能
够可以进行密集部署的轻量级应用。Linux 容器可从单个操作系统运行,在所有容器中共享该
操作系统,因此应用和服务能够保持轻量级,并行快速运行。
3、容器技术发展历史:
2000年,计算机中的容器概念出现,当时称为FreeBSD jail
2001年,LXC(Linux Container)诞生,容器技术通过VServer项目,进入到了Linux领域,这项工作的目的是“在高度独立且安全的单一环境中运行多个通用 Linux 服务器”。
2008年,Docker容器技术通过 dotCloud 登上了舞台。Docker 技术将 LXC 工作与经过改进的开发工具结合在一起,从而提高了容器的用户友好度。Docker 是一种开源技术,也是当前最广为人知的、用于部署和管理 Linux 容器的项目和方法。
4、LXC(Linux Container)
LXC:Linux Container,最早一批真正把容器技术用一组简易模板实现的解决方案,LXC主要用到名称空间(name space)与控制组(cgroups)的技术,其中
namespace:负责隔离一个独立的容器所必须具备的资源
cgroups(Control Groups):实现对系统资源的分配与度量
LXC 基础架构:
namespace
一个隔离的Linux Container必须具有以下资源:
UTS:独立的主机名,域名
IPC:进程间通信和共享内存
PID:独立的init
Network:独立的网卡,TCP/IP协议栈
Mount:独立的根,文件系统
User:独立的root
cgroups(Control Groups)
功能:实现资源的分配和度量
blkio:块设备IO
cpu:CPU
cpuact:CPU资源使用报告
cpuset:多处理器平台上的CPU集合
devices:设备访问
frezr:挂起或恢复任务
meory:内存用量及报告
perf_evnt:对cgroup中的任务进行统一性能测试
net_cls:cgroup中的任务创建的数据报文的类别标识符
5、LXC 的使用与实战
待补充
参考文献:
1、http://www.178linux.com/104355(Docker容器技术介绍(容器概念到docker))
2、https://segmentfault.com/a/1190000022253872(Linux容器技术原理和使用)
3、https://www.redhat.com/zh/topics/containers/whats-a-linux-container(Linux 容器是什么?Linux Container 简介)