diff --git a/cri/v1alpha2/cri.go b/cri/v1alpha2/cri.go index 4a6a5f4e92..841000c04d 100644 --- a/cri/v1alpha2/cri.go +++ b/cri/v1alpha2/cri.go @@ -440,7 +440,8 @@ func (c *CriManager) CreateContainer(ctx context.Context, r *runtime.CreateConta image := "" if iSpec := config.GetImage(); iSpec != nil { - image = iSpec.Image + temp := strings.Split(iSpec.Image, ":") + image = temp[len(temp)-1] } createConfig := &apitypes.ContainerCreateConfig{ ContainerConfig: apitypes.ContainerConfig{ diff --git a/daemon/mgr/container.go b/daemon/mgr/container.go index 38c261b014..579ac4846d 100644 --- a/daemon/mgr/container.go +++ b/daemon/mgr/container.go @@ -95,7 +95,7 @@ type ContainerMgr interface { // Remove removes a container, it may be running or stopped and so on. Remove(ctx context.Context, name string, option *types.ContainerRemoveOptions) error - // 2. The following five functions is related to containr exec. + // 2. The following five functions is related to container exec. // CreateExec creates exec process's environment. CreateExec(ctx context.Context, name string, config *types.ExecCreateConfig) (string, error) @@ -1674,16 +1674,6 @@ func (mgr *ContainerManager) exitedAndRelease(id string, m *ctrd.Message) error // execExitedAndRelease be register into ctrd as a callback function, when the exec process in a container // exited, "ctrd" will call it to release resource and so on. func (mgr *ContainerManager) execExitedAndRelease(id string, m *ctrd.Message) error { - if io := mgr.IOs.Get(id); io != nil { - if err := m.RawError(); err != nil { - fmt.Fprintf(io.Stdout, "%v\n", err) - } - - // close io - io.Close() - mgr.IOs.Remove(id) - } - v, ok := mgr.ExecProcesses.Get(id).Result() if !ok { return errors.Wrap(errtypes.ErrNotfound, "to be exec process: "+id) @@ -1696,7 +1686,16 @@ func (mgr *ContainerManager) execExitedAndRelease(id string, m *ctrd.Message) er execConfig.Running = false execConfig.Error = m.RawError() - // TODO: GC invalid mgr.ExecProcess. + if io := mgr.IOs.Get(id); io != nil { + if err := m.RawError(); err != nil { + fmt.Fprintf(io.Stdout, "%v\n", err) + } + + // close io + io.Close() + mgr.IOs.Remove(id) + } + return nil }