From 776bb43c9e97824a2cb05353c68ef5645f3cc112 Mon Sep 17 00:00:00 2001 From: Danny Yates Date: Mon, 9 Dec 2013 20:46:21 +0000 Subject: [PATCH] Prevent deletion of image if ANY container is depending on it; not just running containers --- server.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/server.go b/server.go index 49b25f7098..392dc81447 100644 --- a/server.go +++ b/server.go @@ -1554,22 +1554,20 @@ func (srv *Server) ImageDelete(name string, autoPrune bool) ([]APIRmi, error) { return nil, nil } - // Prevent deletion if image is used by a running container + // Prevent deletion if image is used by a container for _, container := range srv.runtime.List() { - if container.State.IsRunning() { - parent, err := srv.runtime.repositories.LookupImage(container.Image) - if err != nil { - return nil, err - } + parent, err := srv.runtime.repositories.LookupImage(container.Image) + if err != nil { + return nil, err + } - if err := parent.WalkHistory(func(p *Image) error { - if img.ID == p.ID { - return fmt.Errorf("Conflict, cannot delete %s because the running container %s is using it", name, container.ID) - } - return nil - }); err != nil { - return nil, err + if err := parent.WalkHistory(func(p *Image) error { + if img.ID == p.ID { + return fmt.Errorf("Conflict, cannot delete %s because the container %s is using it", name, container.ID) } + return nil + }); err != nil { + return nil, err } }