github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/rmi.go (about) 1 package client 2 3 import ( 4 "fmt" 5 "net/url" 6 7 "github.com/docker/docker/api/types" 8 Cli "github.com/docker/docker/cli" 9 flag "github.com/docker/docker/pkg/mflag" 10 ) 11 12 // CmdRmi removes all images with the specified name(s). 13 // 14 // Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] 15 func (cli *DockerCli) CmdRmi(args ...string) error { 16 cmd := Cli.Subcmd("rmi", []string{"IMAGE [IMAGE...]"}, Cli.DockerCommands["rmi"].Description, true) 17 force := cmd.Bool([]string{"f", "-force"}, false, "Force removal of the image") 18 noprune := cmd.Bool([]string{"-no-prune"}, false, "Do not delete untagged parents") 19 cmd.Require(flag.Min, 1) 20 21 cmd.ParseFlags(args, true) 22 23 v := url.Values{} 24 if *force { 25 v.Set("force", "1") 26 } 27 if *noprune { 28 v.Set("noprune", "1") 29 } 30 31 var errNames []string 32 for _, name := range cmd.Args() { 33 options := types.ImageRemoveOptions{ 34 ImageID: name, 35 Force: *force, 36 PruneChildren: !*noprune, 37 } 38 39 dels, err := cli.client.ImageRemove(options) 40 if err != nil { 41 fmt.Fprintf(cli.err, "%s\n", err) 42 errNames = append(errNames, name) 43 } else { 44 for _, del := range dels { 45 if del.Deleted != "" { 46 fmt.Fprintf(cli.out, "Deleted: %s\n", del.Deleted) 47 } else { 48 fmt.Fprintf(cli.out, "Untagged: %s\n", del.Untagged) 49 } 50 } 51 } 52 } 53 if len(errNames) > 0 { 54 return fmt.Errorf("Error: failed to remove images: %v", errNames) 55 } 56 return nil 57 }