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