docker rmi: remove an image
This commit is contained in:
parent
81459a5afc
commit
de1c361a6e
2 changed files with 45 additions and 0 deletions
|
@ -222,6 +222,29 @@ func (srv *Server) CmdInspect(stdin io.ReadCloser, stdout io.Writer, args ...str
|
|||
return nil
|
||||
}
|
||||
|
||||
// 'docker rmi NAME' removes all images with the name NAME
|
||||
func (srv *Server) CmdRmi(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
||||
cmd := rcli.Subcmd(stdout, "rmimage", "[OPTIONS] IMAGE", "Remove an image")
|
||||
if err := cmd.Parse(args); err != nil {
|
||||
cmd.Usage()
|
||||
return nil
|
||||
}
|
||||
if cmd.NArg() < 1 {
|
||||
cmd.Usage()
|
||||
return nil
|
||||
}
|
||||
for _, name := range cmd.Args() {
|
||||
image := srv.images.Find(name)
|
||||
if image == nil {
|
||||
return errors.New("No such image: " + name)
|
||||
}
|
||||
if err := srv.images.Delete(name); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (srv *Server) CmdRm(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
||||
flags := rcli.Subcmd(stdout, "rm", "[OPTIONS] CONTAINER", "Remove a container")
|
||||
if err := flags.Parse(args); err != nil {
|
||||
|
|
|
@ -186,6 +186,28 @@ func (index *Index) Rename(oldName, newName string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Delete deletes all images with the name `name`
|
||||
func (index *Index) Delete(name string) error {
|
||||
// Load
|
||||
if err := index.load(); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, exists := index.ByName[name]; !exists {
|
||||
return errors.New("No such image: " + name)
|
||||
}
|
||||
// Remove from index lookup
|
||||
for _, image := range *index.ByName[name] {
|
||||
delete(index.ById, image.Id)
|
||||
}
|
||||
// Remove from name lookup
|
||||
delete(index.ByName, name)
|
||||
// Save
|
||||
if err := index.save(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (index *Index) Names() []string {
|
||||
if err := index.load(); err != nil {
|
||||
return []string{}
|
||||
|
|
Loading…
Add table
Reference in a new issue