github.com/sld880311/docker@v0.0.0-20200524143708-d5593973a475/cli/command/system/df.go (about) 1 package system 2 3 import ( 4 "github.com/docker/docker/cli" 5 "github.com/docker/docker/cli/command" 6 "github.com/docker/docker/cli/command/formatter" 7 "github.com/spf13/cobra" 8 "golang.org/x/net/context" 9 ) 10 11 type diskUsageOptions struct { 12 verbose bool 13 } 14 15 // NewDiskUsageCommand creates a new cobra.Command for `docker df` 16 func NewDiskUsageCommand(dockerCli *command.DockerCli) *cobra.Command { 17 var opts diskUsageOptions 18 19 cmd := &cobra.Command{ 20 Use: "df [OPTIONS]", 21 Short: "Show docker disk usage", 22 Args: cli.NoArgs, 23 RunE: func(cmd *cobra.Command, args []string) error { 24 return runDiskUsage(dockerCli, opts) 25 }, 26 Tags: map[string]string{"version": "1.25"}, 27 } 28 29 flags := cmd.Flags() 30 31 flags.BoolVarP(&opts.verbose, "verbose", "v", false, "Show detailed information on space usage") 32 33 return cmd 34 } 35 36 func runDiskUsage(dockerCli *command.DockerCli, opts diskUsageOptions) error { 37 du, err := dockerCli.Client().DiskUsage(context.Background()) 38 if err != nil { 39 return err 40 } 41 42 duCtx := formatter.DiskUsageContext{ 43 Context: formatter.Context{ 44 Output: dockerCli.Out(), 45 }, 46 LayersSize: du.LayersSize, 47 Images: du.Images, 48 Containers: du.Containers, 49 Volumes: du.Volumes, 50 Verbose: opts.verbose, 51 } 52 53 duCtx.Write() 54 55 return nil 56 }