diff --git a/daemon/create.go b/daemon/create.go index f275b0f9de..5eb536466c 100644 --- a/daemon/create.go +++ b/daemon/create.go @@ -19,18 +19,11 @@ func (daemon *Daemon) ContainerCreate(name string, config *runconfig.Config, hos return "", nil, fmt.Errorf("Config cannot be empty in order to create a container") } - warnings, err := daemon.verifyContainerSettings(hostConfig) + warnings, err := daemon.verifyContainerSettings(hostConfig, config) if err != nil { return "", warnings, err } - // The check for a valid workdir path is made on the server rather than in the - // client. This is because we don't know the type of path (Linux or Windows) - // to validate on the client. - if config.WorkingDir != "" && !filepath.IsAbs(config.WorkingDir) { - return "", warnings, fmt.Errorf("The working directory '%s' is invalid. It needs to be an absolute path.", config.WorkingDir) - } - container, buildWarnings, err := daemon.Create(config, hostConfig, name) if err != nil { if daemon.Graph().IsNotExist(err, config.Image) { diff --git a/daemon/daemon_unix.go b/daemon/daemon_unix.go index e4325a0160..32cd3d358a 100644 --- a/daemon/daemon_unix.go +++ b/daemon/daemon_unix.go @@ -112,9 +112,18 @@ func checkKernel() error { return nil } -func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig) ([]string, error) { +func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig, config *runconfig.Config) ([]string, error) { var warnings []string + if config != nil { + // The check for a valid workdir path is made on the server rather than in the + // client. This is because we don't know the type of path (Linux or Windows) + // to validate on the client. + if config.WorkingDir != "" && !filepath.IsAbs(config.WorkingDir) { + return warnings, fmt.Errorf("The working directory '%s' is invalid. It needs to be an absolute path.", config.WorkingDir) + } + } + if hostConfig == nil { return warnings, nil } diff --git a/daemon/daemon_windows.go b/daemon/daemon_windows.go index 5cb7e41118..613dc4be19 100644 --- a/daemon/daemon_windows.go +++ b/daemon/daemon_windows.go @@ -42,7 +42,7 @@ func checkKernel() error { return nil } -func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig) ([]string, error) { +func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.HostConfig, config *runconfig.HostConfig) ([]string, error) { // TODO Windows. Verifications TBC return nil, nil } diff --git a/daemon/start.go b/daemon/start.go index 7d37a9f5e4..2715022e89 100644 --- a/daemon/start.go +++ b/daemon/start.go @@ -20,7 +20,7 @@ func (daemon *Daemon) ContainerStart(name string, hostConfig *runconfig.HostConf return fmt.Errorf("Container already started") } - if _, err = daemon.verifyContainerSettings(hostConfig); err != nil { + if _, err = daemon.verifyContainerSettings(hostConfig, nil); err != nil { return err }