mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Re-enabled docker rmi
This commit is contained in:
parent
070bc0bb6d
commit
c3622a963d
2 changed files with 48 additions and 28 deletions
18
fs/store.go
18
fs/store.go
|
@ -92,6 +92,24 @@ func (store *Store) Paths() ([]string, error) {
|
|||
return paths, nil
|
||||
}
|
||||
|
||||
func (store *Store) RemoveInPath(pth string) error {
|
||||
images, err := store.List(pth)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, img := range images {
|
||||
if err = store.Remove(img); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (store *Store) Remove(img *Image) error {
|
||||
_, err := store.orm.Delete(img)
|
||||
return err
|
||||
}
|
||||
|
||||
func (store *Store) List(pth string) ([]*Image, error) {
|
||||
pth = path.Clean(pth)
|
||||
images, err := store.orm.Select(Image{}, "select images.* from images, paths where Path=? and paths.Image=images.Id", pth)
|
||||
|
|
|
@ -360,34 +360,36 @@ func (srv *Server) CmdPort(stdin io.ReadCloser, stdout io.Writer, args ...string
|
|||
}
|
||||
|
||||
// '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")
|
||||
// fl_regexp := cmd.Bool("r", false, "Use IMAGE as a regular expression instead of an exact name")
|
||||
// if err := cmd.Parse(args); err != nil {
|
||||
// cmd.Usage()
|
||||
// return nil
|
||||
// }
|
||||
// if cmd.NArg() < 1 {
|
||||
// cmd.Usage()
|
||||
// return nil
|
||||
// }
|
||||
// for _, name := range cmd.Args() {
|
||||
// var err error
|
||||
// if *fl_regexp {
|
||||
// err = srv.images.DeleteMatch(name)
|
||||
// } else {
|
||||
// image := srv.images.Find(name)
|
||||
// if image == nil {
|
||||
// return errors.New("No such image: " + name)
|
||||
// }
|
||||
// err = srv.images.Delete(name)
|
||||
// }
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
func (srv *Server) CmdRmi(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
||||
cmd := rcli.Subcmd(stdout, "rmimage", "[OPTIONS] IMAGE", "Remove an image")
|
||||
fl_all := cmd.Bool("a", false, "Use IMAGE as a path and remove ALL images in this path")
|
||||
if err := cmd.Parse(args); err != nil {
|
||||
cmd.Usage()
|
||||
return nil
|
||||
}
|
||||
if cmd.NArg() < 1 {
|
||||
cmd.Usage()
|
||||
return nil
|
||||
}
|
||||
for _, name := range cmd.Args() {
|
||||
var err error
|
||||
if *fl_all {
|
||||
err = srv.images.RemoveInPath(name)
|
||||
} else {
|
||||
image, err := srv.images.Get(name)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if image == nil {
|
||||
return errors.New("No such image: " + name)
|
||||
}
|
||||
err = srv.images.Remove(image)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (srv *Server) CmdRm(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
||||
cmd := rcli.Subcmd(stdout, "rm", "[OPTIONS] CONTAINER", "Remove a container")
|
||||
|
|
Loading…
Add table
Reference in a new issue