func (m *Mounter) MountSysProc() error { // mount -t proc none {{rootDir}}/proc if err := osutil.MountIfNotMounted("none", fp.Join(m.rootDir, "/proc"), "proc", ""); err != nil { return fmt.Errorf("Failed to mount /proc: %s", err) } // mount --rbind /sys {{rootDir}}/sys if err := osutil.MountIfNotMounted("/sys", fp.Join(m.rootDir, "/sys"), "none", "rbind"); err != nil { return fmt.Errorf("Failed to mount /sys: %s", err) } return nil }
func (m *Mounter) BindMount(hostDir, containerDir string) error { containerDir = fp.Join(m.rootDir, containerDir) if ok := osutil.IsDirEmpty(hostDir); ok { if _, err := os.Create(fp.Join(hostDir, ".droot.keep")); err != nil { return err } } if err := fileutils.CreateIfNotExists(containerDir, true); err != nil { // mkdir -p return err } if err := osutil.MountIfNotMounted(hostDir, containerDir, "none", "bind,rw"); err != nil { return err } return nil }