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  }