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