容器概述及原理
分类:知识集锦 发布时间:2023/4/23 11:30:12

软件开发中使用的虚拟化技术一直以来都是硬件抽象级别的hypervisor技术,其能够支持在一台计算机上运行虚拟的操作系统,与宿主机进行隔离,最大程度的提供了虚拟化管理的灵活程度。但是,随着软件开发的繁复性增加,基于hypervisor的虚拟环境技术的弊端也越来越明显,对于每一个虚拟机都要安装一个操作系统和不必要的程序。而在软件开发的过程中,更关注的是应用本身,过度把精力用于配置依赖环境,使得开发效率低下。为了解决这个问题,容器技术就诞生了,实现了“构建一次,在各平台上运行” 。


概述

容器技术(Linux Container即LXC)是一种是一种内核轻量级的操作系统层虚拟化技术,使用Linux的Namespace进行资源的隔离,Cgroups进行资源的管理。有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。


原理

LXC使用的主要核心技术特性:

Kernel namespaces (ipc, uts, mount, pid, network and user)

Apparmor and SELinux profiles

Seccomp policies

Chroots (using pivot_root)

Kernel capabilities

CGroups (control groups)

Kernel namespaces


Nameapaces是Linux中的一种概念,允许进程修改操作系统的其他资源并且对于未在同一命名空间的进程不可见。通过pid、net、ipc、mnt、uts 等命名空间将容器的进程、网络、消息、文件系统和hostname 隔离开。使得容器中的进程看起来就像爱一个独立环境中运行一样。


Apparmor and SELinux profiles

AppArmor和SELinux都是Linux内核的安全模块。AppArmor允许系统管理员将每个程序与一个安全配置文件关联,从而限制程序的功能,通过它可以指定程序可以读、写或运行哪些文件,是否可以打开网络端口等。


Seccomp policies

Linux系统里,大量的系统调用(systemcall)直接暴露给用户态程序。但是,并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。通过seccomp,能够限制程序使用某些系统调用,这样可以减少系统的暴露面,同时是程序进入一种“安全”的状态。


Chroots (using pivot_root)

pivot_root的功能主要是把整个系统切换到一个新的root目录,而移除对之前root文件系统的依赖,这样就能够umount原先的root文件系统。


Cgroups

提供了对一组进程及将来的子进程的资源的限制,控制和统计的能力,这些资源包括CPU,内存,存储,网络等。通过Cgroups,可以方便的限制某个进程的资源占用,并且可以实时的监控进程的监控和统计信息。

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