diff --git a/components/engine/daemon/restart.go b/components/engine/daemon/restart.go index 061a2f3e58..23a5d9981e 100644 --- a/components/engine/daemon/restart.go +++ b/components/engine/daemon/restart.go @@ -36,25 +36,27 @@ func (daemon *Daemon) containerRestart(container *container.Container, seconds i defer daemon.Unmount(container) } - // set AutoRemove flag to false before stop so the container won't be - // removed during restart process - autoRemove := container.HostConfig.AutoRemove + if container.IsRunning() { + // set AutoRemove flag to false before stop so the container won't be + // removed during restart process + autoRemove := container.HostConfig.AutoRemove - container.HostConfig.AutoRemove = false - err := daemon.containerStop(container, seconds) - // restore AutoRemove irrespective of whether the stop worked or not - container.HostConfig.AutoRemove = autoRemove - // containerStop will write HostConfig to disk, we shall restore AutoRemove - // in disk too - if toDiskErr := container.ToDiskLocking(); toDiskErr != nil { - logrus.Errorf("Write container to disk error: %v", toDiskErr) + container.HostConfig.AutoRemove = false + err := daemon.containerStop(container, seconds) + // restore AutoRemove irrespective of whether the stop worked or not + container.HostConfig.AutoRemove = autoRemove + // containerStop will write HostConfig to disk, we shall restore AutoRemove + // in disk too + if toDiskErr := container.ToDiskLocking(); toDiskErr != nil { + logrus.Errorf("Write container to disk error: %v", toDiskErr) + } + + if err != nil { + return err + } } - if err != nil { - return err - } - - if err = daemon.containerStart(container); err != nil { + if err := daemon.containerStart(container); err != nil { return err }