Advertisement

学习 Docker 实现容器文件系统与镜像隔离机制

阅读量:

本节旨在完成的任务是优化init程序的操作流程,并且确保容器文件系统与其镜像之间相互隔离

pivotRoot

  • 这是一个系统调用,其核心作用是对当前的root文件系统进行更改,从而实现将整个系统的根切换至一个新的位置,不再依赖原有的根。
  • 具体机制在于将当前进程所在的root文件系统移动至old文件夹中,使得new_root成为新的根目录。
复制代码
    func pivotRoot(root string) error {
    	/**
    	  为了使当前root的老 root 和新 root 不在同一个文件系统下,我们把root重新mount了一次
    	  bind mount是把相同的内容换了一个挂载点的挂载方法
    	*/
    	if err := syscall.Mount(root, root, "bind", syscall.MS_BIND|syscall.MS_REC, ""); err != nil {
    		return fmt.Errorf("Mount rootfs to itself error: %v", err)
    	}
    	// 创建 rootfs/.pivot_root 存储 old_root
    	pivotDir := filepath.Join(root, ".pivot_r

全部评论 (0)

还没有任何评论哟~