容器技术中的进程隔离
分类:知识集锦 发布时间:2023/5/8 16:49:39

容器技术的思想最早可以追溯到1979年,这一年Unix版本V7发布,在这个版本中作者发明了chroot系统调用,通过它可以实现改变一个进程及其子进程的根目录到另外一个目录下,为进程指定一个单独的、新的文件系统上下文环境,可见在很早的时候Unix的大神们已经有了进行进程隔离的意识和思想了。

 

那么到底什么叫进程隔离呢?举个栗子大家一看就明白,相信很多同学都使用过tomcat这个web容器,我们可以在tomcat中部署war服务。假设我们有3 个服务都部署在了1个tomcat实例中,假如我们需要重启其中的某个服务,我们就需要重启整个tomcat,那么tomact中的3个服务都会被重启。重启一个服务影响其他2个服务,服务操作存在高度的耦合。但是如果我们把三个服务部署到三个不同的tocmat容器实例中,那么重启任何一个服务都不会影响到其他两个服务,实现了服务的独立管理。

 

通过部署多个实例,我们实现了服务之间的进程隔离,而进程拥有独立的地址空间以及执行上下文。但是这种形式的独立管理并不是真正意义上的独立管理,为什么这么说呢?因为实际上他们还是共用服务器的CPU、内存以及IO等服务器资源。假如Tomcat1占用的服务器内存高了,那么剩余给Tomcat2以及Tomcat2的内存分配就相对来说会变少。因此实际上这三个Tomcat虽然是独立的进程但还是会相互影响。有没有办法实现真正的独立,不互相影响呢?

 

实际上实现资源隔离的方式大概有硬件虚拟化、OS虚拟化以及硬件分区等几种常见的实现方式。但是综合各方面的表现,OS虚拟化成为后期容器技术发展的主流技术路线。

 

容器技术的解决的核心问题就是实现软件运行时的环境隔离,通过容器构建一个标准的、无差别的服务运行环境,这样就不会因为环境、配置以及依赖等原因造成的在这台服务器上好好的,在另外的一台服务器上又不行的尴尬问题。2008年的时候,通过将Cgroups的资源管理能力以及Namespace的视图隔离能力糅合在一起,Linux Container被合入linux主线,Linux Container是Linux系统提供的容器技术,能提供轻量级的虚拟化能力,能够进行隔离进程和资源。通过这种OS层面的虚拟化技术,实际上也就是解决了容器的核心问题即为如何实现服务运行时的隔离。因此可以说Linux Container是后期实现Docker技术的基础。

 

2013年,Docker正式发布。Docker是基于Linux Container技术发展而来的,它的口号是:“Build,Ship and Run Any App,Anywhere”。Docker创新构建了一种全新的软件打包、软件分发以及软件运行的机制,它通过容器镜像,将应用服务本身以及运行服务所需要的环境、配置、资源文件以及依赖库等都打包成一个唯一版本的软件镜像包。往后在任何地方运行的服务都是基于这个软件镜像包来进行构建和运行的,真正解决了如何高效发布软件以及如何高效运行软件的两大核心问题。关于Docker,后面会有专门的文章进行介绍。

体验创新云技术带来核心业务效率显著提升
立即预约,加速企业数字化转型进程
Copyright ⓒ 2022 苏州博纳讯动软件有限公司 国徽 苏ICP备13004761号 法律声明及隐私政策