Docker 的前世今生
一、Docker 介绍
容器技术被认为是未来部署软件的主流趋势之一,高性能,轻量级及跨平台是容器技术的主要特征,传统的应用部署过程大概是:下载软件->编译安装->启动软件,比如现在要安装 LNMP 软件,就得先下载 Nginx+Mysql+PHP,然后一个个安装,这对于一两台服务器时还能接受,要是面对成千上万的服务器集群,还不得累死吗?有没有办法把这几个软件打包成一个软件一次性安装呢,容器的出现使得很好的解决了这类问题。
二、什么是容器
容器以一种特定的格式来打包软件,这种格式可以各自独立的运行在同一个操作系统之上,不像虚拟机,容器不会捆绑一个完整的操作系统,而仅仅打包软件运行所需要的依赖库和设置。这样可以实现一个高效、轻量级、自给自足的系统,并且可以保证软件总是以相同的方式运行,而不管它被部署在哪里。
从上可知,容器是一种打包应用的方式,可以帮你打包应用中的所有软件和软件所依赖的环境,并且可以实现跨平台部署。相比虚拟机,容器更高效和轻量化,一台服务器运行1000个虚拟机基本是难以想象的,但IBM的服务器据称已经在一台服务器上运行万级的容器。
三、Docker 是什么? docker 是容器领导者。
Docker 是世界领先的软件容器平台,在进行多人协作开发时,开发者可以使用 Docker 来消除所谓 我这里运行是好的(works on my machine)问题,运维人员使用 Docker 来并行的运行和管理应用来获得更优计算密度,基于各自独立的容器。企业使用 Docker 来建立敏捷的交付方式,实现更快的、更安全的和更自信的交付新功能而不管是Linux或Windos服务器。
四、主机虚拟化和容器的区别
五、早期的虚拟化隔离
通过比较复杂的代码开发过程,调用以下三项技术,实现容器的创建和销毁。
chroot
完整的根文件系统 FHS 标准
Namespace 命名空间
1、PID(Process ID):进程隔离2、NET(Network):管理网络接口
3、IPC(InterProcess Communication):管理跨进程通信的访问
4、MNT(Mount):管理挂载点
5、UTS(Unix Timesharing System):隔离内核和版本标识(主机名域名)
6、User:用户空间隔离
Cgroups
- 资源限制管理
- 优先级设定
- 资源计量
- 资源控制
- blkio:块设备 io
- cpu:cpu
- cpuacct:cpu 资源使用报告
- cpuset:多处理器平台上的 cpu 集合
- devices:设备访问
- freezzer:挂起或恢复任务
- memory:内存用量及报告
- pref event:对 cgroup 中的任务进行同一性能测试
- net cls:cgroup 中的任务创建的数据报文的类别标识符
六、LXC(LinuXContainer) & Docker
LXC
对于原有的常用功能进行了封装,方便我们做容器的生命周期
Docker
在 lxc 基础上做了革命性的改变-镜像
以上是 Docker 的前世今生 的全部内容, 来源链接: utcz.com/p/233419.html