diff --git a/commands.go b/commands.go index bf847e73d8..84b4e13bab 100644 --- a/commands.go +++ b/commands.go @@ -1433,6 +1433,9 @@ func (cli *DockerCli) CmdRun(args ...string) error { return nil } + flRm := cmd.Lookup("rm") + autoRemove, _ := strconv.ParseBool(flRm.Value.String()) + var containerIDFile *os.File if len(hostConfig.ContainerIDFile) > 0 { if _, err := ioutil.ReadFile(hostConfig.ContainerIDFile); err == nil { @@ -1580,6 +1583,12 @@ func (cli *DockerCli) CmdRun(args ...string) error { if err != nil { return err } + if autoRemove { + _, _, err = cli.call("DELETE", "/containers/"+runResult.ID, nil) + if err != nil { + return err + } + } if status != 0 { return &utils.StatusError{Status: status} } diff --git a/container.go b/container.go index ec945d7b9b..12218be04a 100644 --- a/container.go +++ b/container.go @@ -90,7 +90,6 @@ type HostConfig struct { Binds []string ContainerIDFile string LxcConf []KeyValuePair - AutoRemove bool } type BindMap struct { @@ -248,7 +247,6 @@ func ParseRun(args []string, capabilities *Capabilities) (*Config, *HostConfig, Binds: binds, ContainerIDFile: *flContainerIDFile, LxcConf: lxcConf, - AutoRemove: *flAutoRemove, } if capabilities != nil && *flMemory > 0 && !capabilities.SwapLimit { @@ -1027,11 +1025,6 @@ func (container *Container) monitor(hostConfig *HostConfig) { // FIXME: why are we serializing running state to disk in the first place? //log.Printf("%s: Failed to dump configuration to the disk: %s", container.ID, err) } - if hostConfig != nil { - if hostConfig.AutoRemove { - container.runtime.Destroy(container) - } - } } func (container *Container) kill() error {