docker系列八 docker容器的底层技术

1、虚拟化技术分类

虚拟化一般分为y硬件级虚拟化和操作系统级虚拟化。

(1)、硬件级虚拟化是运行在硬件之上的虚拟化技术,他的管理软件就是我们常说的 hypervisor 或者 virtual machine monitor。它需要模拟的就是一个完整的操作系统。

VMWare、Xen、VirtualBox、AWS EC2和阿里云的ECS都是用的这种技术。其中阿里云老一代机器使用的是Xen技术、新一代机器则使用的是KVM技术。

(2)、操作系统级虚拟化是运行在操作系统之上的,它模拟的是运行在操作系统上的多个不同进程,并将其封装在一个封闭的容器中,也称为容器化技术。

docker正式容器虚拟化中目前最流行的一种实现。

2、docker 容器的底层技术

docker是用go编写的,同时使用了多种内核的功能实现,具体使用到的内核技术如下:

(1)、Namespaces

docker使用了Namespace技术来隔离工作区,也就是通常所说的容器。当容器运行时,Docker创建了一系列的Namespace。通过Namespaces,容器运行在它自己的独立的命名空间之中,而外层没有访问权限。目前,docker使用了以下Namespace:

PID Namespace        --用于进程的隔离(PID:Process ID)
NET Namespace        --用于管理网络接口x (NET:Networking)
IPC Namespace        --用于管理进程间通信(IPC:Inter Process Communication)
MNT Namespace        --用于管理Mount点(MNT:Mouunt)
UTS Namespace        --用于隔离内核和版本信息(UTS:UNIX Timesharing System)
(1)、PID设置

PID用于控制容器中的进程使用什么pid。一般来说,主机上的进程ID是从1开始的,通常是init进程,而容器中执行的程序的pid也是从1开始的,这就是利用pid namespace实现的。

docker run -it --rm --pid=host ubuntu /bin/bash    --和主机共享pid namespace

(2)、Control Groups

docker 也使用了CGroups 这项内核技术,通过CGroups 可以限制应用程序使用的资源,这项技术可以使用户主机更好地运行多个容器而相互间不受影响。CGroups 可以限定容器使用的硬件资源,如内存数量,CPU数量等。

(3)、Union File System

Union FS 用来对文件系统进行分层,通过分层可以使镜像更加轻量级和快速。Docker可以使用多种不同的Union FS,如:AUFS、Btrfs、VFS、DevicemapperFS等。

你可能感兴趣的:(docker系列八 docker容器的底层技术)