Docker原理


Docker技术原理

Docker实际上做了三件事:

  1. 启用Linux Namespace配置;
  2. 设置指定的Cgroups参数;
  3. 切换进程的根目录(change root)

其中,第一步用于指定容器进程的Namespace,通过clone()命令中的CLONE_NEWPID参数指定该进程的PID,使得容器内的进程只能看到同一Namespace下的进程;
第二步,设置Cgroups用于限制进程组的硬件资源,使其只能使用宿主机的部分资源(例如只能使用50%的CPU);
第三步,首先通过clone()命令中的CLONE_NEWNS参数设置Mount Namespace,然后使用chroot设置容器进程的根目录。

Docker分层文件系统

Ubuntu镜像为例,该镜像有五层,每层都是Ubuntu操作系统的一部分。
在使用镜像时,Docker会把这些增量联合挂载到一个统一的挂载点,在这个挂载点上,显示的就是一个完整的Ubuntu系统目录。


文章作者: Hiper
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hiper !
  目录