一、Linux容器综述
容器技术是Linux系统虚拟化演进的成果,是在操作系统层面上实现的一种轻量级的虚拟化隔离方案。旨在单一Linux主机上提供多套隔离的Linux环境,通过将应用程序及其依赖项进行标准封装,打包在一起,运行在容器沙盒中,与其他的容器沙盒相互隔离,形成一个独立、可移植的运行环境,实现在一台Linux主机上运行多个相互隔离的应用程序,提升了资源的使用效率。
相较于传统的虚拟化技术,如VMWare、OpenStack,其是面向资源的封装,虚拟机会部署一个完整的操作系统,提供一整套完整的、隔离的操作系统环境,容器提供了一种更为轻量(共享主机系统内核)、快速(本质是一个个资源隔离、受限的系统进程)、便捷(沙盒可以快速迁移到其他主机)的虚拟化方案,侧重解决的是应用运行时环境隔离的问题,容器需要运行时隔离技术来保证容器的运行环境符合预期,这种软隔离同时也提升了资源利用率,减少了不必要的资源消耗。
本质上,Linux容器是操作系统上的一个特殊进程,通过Cgroups和Namespace等技术,实现了进程级别的隔离和资源控制,从而为应用进程提供了一个稳定、可靠、相对安全的运行环境。由于受限Linux容器进程共享内核的特性,内核属性的变动会影响所有的上层容器进程,同时软隔离的属性也会影响容器进程之间的安全性,为了解决这类问题,目前也出现了一些安全容器,如Kata Containers,这类容器应用提供了一个完整的操作系统执行环境,每个容器都运行在一个单独的微型虚拟机中,拥有独立的操作系统内核,以及虚拟化层的安全隔离。