diff --git a/libcontainer/rootfs_linux.go b/libcontainer/rootfs_linux.go index 88aa77d517d..21f380df76f 100644 --- a/libcontainer/rootfs_linux.go +++ b/libcontainer/rootfs_linux.go @@ -27,6 +27,8 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) { if err := prepareRoot(config); err != nil { return newSystemError(err) } + + setupDev := len(config.Devices) == 0 for _, m := range config.Mounts { for _, precmd := range m.PremountCmds { if err := mountCmd(precmd); err != nil { @@ -43,14 +45,16 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) { } } } - if err := createDevices(config); err != nil { - return newSystemError(err) - } - if err := setupPtmx(config, console); err != nil { - return newSystemError(err) - } - if err := setupDevSymlinks(config.Rootfs); err != nil { - return newSystemError(err) + if !setupDev { + if err := createDevices(config); err != nil { + return newSystemError(err) + } + if err := setupPtmx(config, console); err != nil { + return newSystemError(err) + } + if err := setupDevSymlinks(config.Rootfs); err != nil { + return newSystemError(err) + } } if err := syscall.Chdir(config.Rootfs); err != nil { return newSystemError(err) @@ -63,8 +67,10 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) { if err != nil { return newSystemError(err) } - if err := reOpenDevNull(config.Rootfs); err != nil { - return newSystemError(err) + if !setupDev { + if err := reOpenDevNull(config.Rootfs); err != nil { + return newSystemError(err) + } } if config.Readonlyfs { if err := setReadonly(); err != nil {