diff --git a/api_params.go b/api_params.go index e4508542ef..5a23cfc1be 100644 --- a/api_params.go +++ b/api_params.go @@ -52,15 +52,17 @@ type APIInfo struct { Debug bool Containers int Images int - NFd int `json:",omitempty"` - NGoroutines int `json:",omitempty"` - MemoryLimit bool `json:",omitempty"` - SwapLimit bool `json:",omitempty"` - IPv4Forwarding bool `json:",omitempty"` - LXCVersion string `json:",omitempty"` - NEventsListener int `json:",omitempty"` - KernelVersion string `json:",omitempty"` - IndexServerAddress string `json:",omitempty"` + Driver string `json:",omitempty"` + DriverStatus [][2]string `json:",omitempty"` + NFd int `json:",omitempty"` + NGoroutines int `json:",omitempty"` + MemoryLimit bool `json:",omitempty"` + SwapLimit bool `json:",omitempty"` + IPv4Forwarding bool `json:",omitempty"` + LXCVersion string `json:",omitempty"` + NEventsListener int `json:",omitempty"` + KernelVersion string `json:",omitempty"` + IndexServerAddress string `json:",omitempty"` } type APITop struct { diff --git a/aufs/aufs.go b/aufs/aufs.go index e0727440e2..c0bc069ce8 100644 --- a/aufs/aufs.go +++ b/aufs/aufs.go @@ -103,6 +103,10 @@ func (a *AufsDriver) String() string { return "aufs" } +func (d *AufsDriver) Status() [][2]string { + return nil +} + // Three folders are created for each id // mnt, layers, and diff func (a *AufsDriver) Create(id, parent string) error { diff --git a/commands.go b/commands.go index 4b51bc4433..e991492d5e 100644 --- a/commands.go +++ b/commands.go @@ -460,6 +460,10 @@ func (cli *DockerCli) CmdInfo(args ...string) error { fmt.Fprintf(cli.out, "Containers: %d\n", out.Containers) fmt.Fprintf(cli.out, "Images: %d\n", out.Images) + fmt.Fprintf(cli.out, "Driver: %s\n", out.Driver) + for _, pair := range out.DriverStatus { + fmt.Fprintf(cli.out, " %s: %s\n", pair[0], pair[1]) + } if out.Debug || os.Getenv("DEBUG") != "" { fmt.Fprintf(cli.out, "Debug mode (server): %v\n", out.Debug) fmt.Fprintf(cli.out, "Debug mode (client): %v\n", os.Getenv("DEBUG") != "") diff --git a/devmapper/driver.go b/devmapper/driver.go index 6123b4c3e4..315b7b091e 100644 --- a/devmapper/driver.go +++ b/devmapper/driver.go @@ -37,6 +37,21 @@ func (d *Driver) String() string { return "devicemapper" } +func (d *Driver) Status() [][2]string { + s := d.DeviceSet.Status() + + status := [][2]string{ + {"Pool Name", s.PoolName}, + {"Data file", s.DataLoopback}, + {"Metadata file", s.MetadataLoopback}, + {"Data Space Used", fmt.Sprintf("%.1f Mb", float64(s.Data.Used)/(1024*1024))}, + {"Data Space Total", fmt.Sprintf("%.1f Mb", float64(s.Data.Total)/(1024*1024))}, + {"Metadata Space Used", fmt.Sprintf("%.1f Mb", float64(s.Metadata.Used)/(1024*1024))}, + {"Metadata Space Total", fmt.Sprintf("%.1f Mb", float64(s.Metadata.Total)/(1024*1024))}, + } + return status +} + func (d *Driver) Cleanup() error { return d.DeviceSet.Shutdown() } diff --git a/graphdriver/driver.go b/graphdriver/driver.go index 3987a79580..e55adf4c35 100644 --- a/graphdriver/driver.go +++ b/graphdriver/driver.go @@ -11,12 +11,16 @@ import ( type InitFunc func(root string) (Driver, error) type Driver interface { + String() string + Create(id, parent string) error Remove(id string) error Get(id string) (dir string, err error) Size(id string) (bytes int64, err error) + Status() [][2]string + Cleanup() error } diff --git a/graphdriver/dummy/driver.go b/graphdriver/dummy/driver.go index ad0e21ec4a..4ca8fac58a 100644 --- a/graphdriver/dummy/driver.go +++ b/graphdriver/dummy/driver.go @@ -27,6 +27,10 @@ func (d *Driver) String() string { return "dummy" } +func (d *Driver) Status() [][2]string { + return nil +} + func (d *Driver) Cleanup() error { return nil } diff --git a/server.go b/server.go index 1d24f73433..a973aa5d00 100644 --- a/server.go +++ b/server.go @@ -375,6 +375,8 @@ func (srv *Server) DockerInfo() *APIInfo { return &APIInfo{ Containers: len(srv.runtime.List()), Images: imgcount, + Driver: srv.runtime.driver.String(), + DriverStatus: srv.runtime.driver.Status(), MemoryLimit: srv.runtime.capabilities.MemoryLimit, SwapLimit: srv.runtime.capabilities.SwapLimit, IPv4Forwarding: !srv.runtime.capabilities.IPv4ForwardingDisabled,