Docker的核心底层技术有哪些?Docker可以运行在64位Linux发行版以及苹果和微软系统上,但后两者只能使用虚拟机作为宿主机。所有的可运行的容器运行在宿主机系统的内核之上,但是锁定在自己的运行环境中,与主机以及其他容器的运行环境是隔离的。Docker底层的两个核心技术分别是Namespaces和Cgroups(Controlgroups),并且使用了一系列 Linux 内核提供的特性来实现容器的基本功能,包含命名空间、群组控制、联合文件系统以及LXC等特性。
(1)命名空间(Namespaces)。命名空间的作用是为容器提供进程间隔离的技术,每个容器都有独立的运行空间,比如pid,net,mnt,uts,ipc等命名空间,以及为每个容器提供不同的主机名。命名空间可以保证不同的容器之间不会相互干扰,每个容器都像是一个独立空间且有可使用的系统。利用命名空间提供了一个隔离层,每一个应用服务都是在它们自己的命名空间中运行而且不会访问到命名空间之外的资源。
(2)群组控制(Cgroups)。
Docker使用到了群组控制技术来管理可利用的资源,其主要具有对共享资源的分配、限制、审计及管理等功能,例如可以为每个容器分配固定的CPU、内存以及I/O等资源。群组控制特性使得容器能在物理机上互不干扰地运行,并且平等使用物理资源。
(3)联合文件系统(AUFS)。
联合文件系统是一个分层的轻量级且高性能的文件系统,Docker使用该文件系统叠加分层的构造容器。Docker可以使用很多种类的文件系统,包括AUFS,btrfs,vfs以及DeviceMapper等。正是具有构建Docker镜像基础的AUFS文件系统,将具有不同文件系统结构的镜像层进行叠加挂载,让它们看上去就像是一个文件系统。
(4)LXC(Linux Container)。
LXC目标是提供一个共享宿主机内核的系统级虚拟化方法,在运行时不用重复加载系统内核,并且具有很多的容器共享主机一个内核的优势,因此可以提高容器的启动速度,并且大大减少占用主机的物理资源。