diff --git a/rootfs_linux.go b/rootfs_linux.go index a1fb8f490..5a94e6865 100644 --- a/rootfs_linux.go +++ b/rootfs_linux.go @@ -100,7 +100,23 @@ func mount(m *configs.Mount, rootfs, mountLabel string) error { return err } return syscall.Mount(m.Source, dest, m.Device, uintptr(m.Flags), "") - case "tmpfs", "mqueue", "devpts", "sysfs": + case "tmpfs": + stat, err := os.Stat(dest) + if err != nil { + if err := os.MkdirAll(dest, 0755); err != nil && !os.IsExist(err) { + return err + } + } + if err := syscall.Mount(m.Source, dest, m.Device, uintptr(m.Flags), data); err != nil { + return err + } + if stat != nil { + if err = os.Chmod(dest, stat.Mode()); err != nil { + return err + } + } + return nil + case "mqueue", "devpts", "sysfs": if err := os.MkdirAll(dest, 0755); err != nil && !os.IsExist(err) { return err }