学习 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)
还没有任何评论哟~
