зеркало из https://github.com/microsoft/docker.git
Re-enabled docker rmi
This commit is contained in:
Родитель
070bc0bb6d
Коммит
c3622a963d
18
fs/store.go
18
fs/store.go
|
@ -92,6 +92,24 @@ func (store *Store) Paths() ([]string, error) {
|
||||||
return paths, nil
|
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) {
|
func (store *Store) List(pth string) ([]*Image, error) {
|
||||||
pth = path.Clean(pth)
|
pth = path.Clean(pth)
|
||||||
images, err := store.orm.Select(Image{}, "select images.* from images, paths where Path=? and paths.Image=images.Id", 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
|
// 'docker rmi NAME' removes all images with the name NAME
|
||||||
// func (srv *Server) CmdRmi(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
func (srv *Server) CmdRmi(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
||||||
// cmd := rcli.Subcmd(stdout, "rmimage", "[OPTIONS] IMAGE", "Remove an image")
|
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")
|
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 {
|
if err := cmd.Parse(args); err != nil {
|
||||||
// cmd.Usage()
|
cmd.Usage()
|
||||||
// return nil
|
return nil
|
||||||
// }
|
}
|
||||||
// if cmd.NArg() < 1 {
|
if cmd.NArg() < 1 {
|
||||||
// cmd.Usage()
|
cmd.Usage()
|
||||||
// return nil
|
return nil
|
||||||
// }
|
}
|
||||||
// for _, name := range cmd.Args() {
|
for _, name := range cmd.Args() {
|
||||||
// var err error
|
var err error
|
||||||
// if *fl_regexp {
|
if *fl_all {
|
||||||
// err = srv.images.DeleteMatch(name)
|
err = srv.images.RemoveInPath(name)
|
||||||
// } else {
|
} else {
|
||||||
// image := srv.images.Find(name)
|
image, err := srv.images.Get(name)
|
||||||
// if image == nil {
|
if err != nil {
|
||||||
// return errors.New("No such image: " + name)
|
return err
|
||||||
// }
|
} else if image == nil {
|
||||||
// err = srv.images.Delete(name)
|
return errors.New("No such image: " + name)
|
||||||
// }
|
}
|
||||||
// if err != nil {
|
err = srv.images.Remove(image)
|
||||||
// return err
|
}
|
||||||
// }
|
if err != nil {
|
||||||
// }
|
return err
|
||||||
// return nil
|
}
|
||||||
// }
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (srv *Server) CmdRm(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
func (srv *Server) CmdRm(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
|
||||||
cmd := rcli.Subcmd(stdout, "rm", "[OPTIONS] CONTAINER", "Remove a container")
|
cmd := rcli.Subcmd(stdout, "rm", "[OPTIONS] CONTAINER", "Remove a container")
|
||||||
|
|
Загрузка…
Ссылка в новой задаче