mirror of https://github.com/docker/cli.git
Merge pull request #1638 from ijc/separate-client-system-info
Separate client infomation in `docker system info`
This commit is contained in:
commit
080f30a60f
|
@ -21,6 +21,23 @@ type infoOptions struct {
|
||||||
format string
|
format string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type clientInfo struct {
|
||||||
|
Debug bool
|
||||||
|
Warnings []string
|
||||||
|
}
|
||||||
|
|
||||||
|
type info struct {
|
||||||
|
// This field should/could be ServerInfo but is anonymous to
|
||||||
|
// preserve backwards compatibility in the JSON rendering
|
||||||
|
// which has ServerInfo immediately within the top-level
|
||||||
|
// object.
|
||||||
|
*types.Info `json:",omitempty"`
|
||||||
|
ServerErrors []string `json:",omitempty"`
|
||||||
|
|
||||||
|
ClientInfo *clientInfo `json:",omitempty"`
|
||||||
|
ClientErrors []string `json:",omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// NewInfoCommand creates a new cobra.Command for `docker info`
|
// NewInfoCommand creates a new cobra.Command for `docker info`
|
||||||
func NewInfoCommand(dockerCli command.Cli) *cobra.Command {
|
func NewInfoCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
var opts infoOptions
|
var opts infoOptions
|
||||||
|
@ -42,63 +59,111 @@ func NewInfoCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
func runInfo(dockerCli command.Cli, opts *infoOptions) error {
|
func runInfo(dockerCli command.Cli, opts *infoOptions) error {
|
||||||
|
var info info
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
info, err := dockerCli.Client().Info(ctx)
|
if dinfo, err := dockerCli.Client().Info(ctx); err == nil {
|
||||||
if err != nil {
|
info.Info = &dinfo
|
||||||
return err
|
} else {
|
||||||
|
info.ServerErrors = append(info.ServerErrors, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info.ClientInfo = &clientInfo{
|
||||||
|
Debug: debug.IsEnabled(),
|
||||||
|
}
|
||||||
|
|
||||||
if opts.format == "" {
|
if opts.format == "" {
|
||||||
return prettyPrintInfo(dockerCli, info)
|
return prettyPrintInfo(dockerCli, info)
|
||||||
}
|
}
|
||||||
return formatInfo(dockerCli, info, opts.format)
|
return formatInfo(dockerCli, info, opts.format)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func prettyPrintInfo(dockerCli command.Cli, info info) error {
|
||||||
|
fmt.Fprintln(dockerCli.Out(), "Client:")
|
||||||
|
if info.ClientInfo != nil {
|
||||||
|
if err := prettyPrintClientInfo(dockerCli, *info.ClientInfo); err != nil {
|
||||||
|
info.ClientErrors = append(info.ClientErrors, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, err := range info.ClientErrors {
|
||||||
|
fmt.Fprintln(dockerCli.Out(), "ERROR:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintln(dockerCli.Out())
|
||||||
|
fmt.Fprintln(dockerCli.Out(), "Server:")
|
||||||
|
if info.Info != nil {
|
||||||
|
for _, err := range prettyPrintServerInfo(dockerCli, *info.Info) {
|
||||||
|
info.ServerErrors = append(info.ServerErrors, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, err := range info.ServerErrors {
|
||||||
|
fmt.Fprintln(dockerCli.Out(), "ERROR:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(info.ServerErrors) > 0 || len(info.ClientErrors) > 0 {
|
||||||
|
return fmt.Errorf("errors pretty printing info")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func prettyPrintClientInfo(dockerCli command.Cli, info clientInfo) error {
|
||||||
|
fmt.Fprintln(dockerCli.Out(), " Debug Mode:", info.Debug)
|
||||||
|
|
||||||
|
if len(info.Warnings) > 0 {
|
||||||
|
fmt.Fprintln(dockerCli.Err(), strings.Join(info.Warnings, "\n"))
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// nolint: gocyclo
|
// nolint: gocyclo
|
||||||
func prettyPrintInfo(dockerCli command.Cli, info types.Info) error {
|
func prettyPrintServerInfo(dockerCli command.Cli, info types.Info) []error {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Containers:", info.Containers)
|
var errs []error
|
||||||
fmt.Fprintln(dockerCli.Out(), " Running:", info.ContainersRunning)
|
|
||||||
fmt.Fprintln(dockerCli.Out(), " Paused:", info.ContainersPaused)
|
fmt.Fprintln(dockerCli.Out(), " Containers:", info.Containers)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Stopped:", info.ContainersStopped)
|
fmt.Fprintln(dockerCli.Out(), " Running:", info.ContainersRunning)
|
||||||
fmt.Fprintln(dockerCli.Out(), "Images:", info.Images)
|
fmt.Fprintln(dockerCli.Out(), " Paused:", info.ContainersPaused)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Server Version:", info.ServerVersion)
|
fmt.Fprintln(dockerCli.Out(), " Stopped:", info.ContainersStopped)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Storage Driver:", info.Driver)
|
fmt.Fprintln(dockerCli.Out(), " Images:", info.Images)
|
||||||
|
fprintlnNonEmpty(dockerCli.Out(), " Server Version:", info.ServerVersion)
|
||||||
|
fprintlnNonEmpty(dockerCli.Out(), " Storage Driver:", info.Driver)
|
||||||
if info.DriverStatus != nil {
|
if info.DriverStatus != nil {
|
||||||
for _, pair := range info.DriverStatus {
|
for _, pair := range info.DriverStatus {
|
||||||
fmt.Fprintf(dockerCli.Out(), " %s: %s\n", pair[0], pair[1])
|
fmt.Fprintf(dockerCli.Out(), " %s: %s\n", pair[0], pair[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if info.SystemStatus != nil {
|
if info.SystemStatus != nil {
|
||||||
for _, pair := range info.SystemStatus {
|
for _, pair := range info.SystemStatus {
|
||||||
fmt.Fprintf(dockerCli.Out(), "%s: %s\n", pair[0], pair[1])
|
fmt.Fprintf(dockerCli.Out(), " %s: %s\n", pair[0], pair[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Logging Driver:", info.LoggingDriver)
|
fprintlnNonEmpty(dockerCli.Out(), " Logging Driver:", info.LoggingDriver)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Cgroup Driver:", info.CgroupDriver)
|
fprintlnNonEmpty(dockerCli.Out(), " Cgroup Driver:", info.CgroupDriver)
|
||||||
|
|
||||||
fmt.Fprintln(dockerCli.Out(), "Plugins:")
|
fmt.Fprintln(dockerCli.Out(), " Plugins:")
|
||||||
fmt.Fprintln(dockerCli.Out(), " Volume:", strings.Join(info.Plugins.Volume, " "))
|
fmt.Fprintln(dockerCli.Out(), " Volume:", strings.Join(info.Plugins.Volume, " "))
|
||||||
fmt.Fprintln(dockerCli.Out(), " Network:", strings.Join(info.Plugins.Network, " "))
|
fmt.Fprintln(dockerCli.Out(), " Network:", strings.Join(info.Plugins.Network, " "))
|
||||||
|
|
||||||
if len(info.Plugins.Authorization) != 0 {
|
if len(info.Plugins.Authorization) != 0 {
|
||||||
fmt.Fprintln(dockerCli.Out(), " Authorization:", strings.Join(info.Plugins.Authorization, " "))
|
fmt.Fprintln(dockerCli.Out(), " Authorization:", strings.Join(info.Plugins.Authorization, " "))
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintln(dockerCli.Out(), " Log:", strings.Join(info.Plugins.Log, " "))
|
fmt.Fprintln(dockerCli.Out(), " Log:", strings.Join(info.Plugins.Log, " "))
|
||||||
|
|
||||||
fmt.Fprintln(dockerCli.Out(), "Swarm:", info.Swarm.LocalNodeState)
|
fmt.Fprintln(dockerCli.Out(), " Swarm:", info.Swarm.LocalNodeState)
|
||||||
printSwarmInfo(dockerCli, info)
|
printSwarmInfo(dockerCli, info)
|
||||||
|
|
||||||
if len(info.Runtimes) > 0 {
|
if len(info.Runtimes) > 0 {
|
||||||
fmt.Fprint(dockerCli.Out(), "Runtimes:")
|
fmt.Fprint(dockerCli.Out(), " Runtimes:")
|
||||||
for name := range info.Runtimes {
|
for name := range info.Runtimes {
|
||||||
fmt.Fprintf(dockerCli.Out(), " %s", name)
|
fmt.Fprintf(dockerCli.Out(), " %s", name)
|
||||||
}
|
}
|
||||||
fmt.Fprint(dockerCli.Out(), "\n")
|
fmt.Fprint(dockerCli.Out(), "\n")
|
||||||
fmt.Fprintln(dockerCli.Out(), "Default Runtime:", info.DefaultRuntime)
|
fmt.Fprintln(dockerCli.Out(), " Default Runtime:", info.DefaultRuntime)
|
||||||
}
|
}
|
||||||
|
|
||||||
if info.OSType == "linux" {
|
if info.OSType == "linux" {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Init Binary:", info.InitBinary)
|
fmt.Fprintln(dockerCli.Out(), " Init Binary:", info.InitBinary)
|
||||||
|
|
||||||
for _, ci := range []struct {
|
for _, ci := range []struct {
|
||||||
Name string
|
Name string
|
||||||
|
@ -108,27 +173,27 @@ func prettyPrintInfo(dockerCli command.Cli, info types.Info) error {
|
||||||
{"runc", info.RuncCommit},
|
{"runc", info.RuncCommit},
|
||||||
{"init", info.InitCommit},
|
{"init", info.InitCommit},
|
||||||
} {
|
} {
|
||||||
fmt.Fprintf(dockerCli.Out(), "%s version: %s", ci.Name, ci.Commit.ID)
|
fmt.Fprintf(dockerCli.Out(), " %s version: %s", ci.Name, ci.Commit.ID)
|
||||||
if ci.Commit.ID != ci.Commit.Expected {
|
if ci.Commit.ID != ci.Commit.Expected {
|
||||||
fmt.Fprintf(dockerCli.Out(), " (expected: %s)", ci.Commit.Expected)
|
fmt.Fprintf(dockerCli.Out(), " (expected: %s)", ci.Commit.Expected)
|
||||||
}
|
}
|
||||||
fmt.Fprint(dockerCli.Out(), "\n")
|
fmt.Fprint(dockerCli.Out(), "\n")
|
||||||
}
|
}
|
||||||
if len(info.SecurityOptions) != 0 {
|
if len(info.SecurityOptions) != 0 {
|
||||||
kvs, err := types.DecodeSecurityOptions(info.SecurityOptions)
|
if kvs, err := types.DecodeSecurityOptions(info.SecurityOptions); err != nil {
|
||||||
if err != nil {
|
errs = append(errs, err)
|
||||||
return err
|
} else {
|
||||||
}
|
fmt.Fprintln(dockerCli.Out(), " Security Options:")
|
||||||
fmt.Fprintln(dockerCli.Out(), "Security Options:")
|
for _, so := range kvs {
|
||||||
for _, so := range kvs {
|
fmt.Fprintln(dockerCli.Out(), " "+so.Name)
|
||||||
fmt.Fprintln(dockerCli.Out(), " "+so.Name)
|
for _, o := range so.Options {
|
||||||
for _, o := range so.Options {
|
switch o.Key {
|
||||||
switch o.Key {
|
case "profile":
|
||||||
case "profile":
|
if o.Value != "default" {
|
||||||
if o.Value != "default" {
|
fmt.Fprintln(dockerCli.Err(), " WARNING: You're not using the default seccomp profile")
|
||||||
fmt.Fprintln(dockerCli.Err(), " WARNING: You're not using the default seccomp profile")
|
}
|
||||||
|
fmt.Fprintln(dockerCli.Out(), " Profile:", o.Value)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Profile:", o.Value)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,80 +202,79 @@ func prettyPrintInfo(dockerCli command.Cli, info types.Info) error {
|
||||||
|
|
||||||
// Isolation only has meaning on a Windows daemon.
|
// Isolation only has meaning on a Windows daemon.
|
||||||
if info.OSType == "windows" {
|
if info.OSType == "windows" {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Default Isolation:", info.Isolation)
|
fmt.Fprintln(dockerCli.Out(), " Default Isolation:", info.Isolation)
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Kernel Version:", info.KernelVersion)
|
fprintlnNonEmpty(dockerCli.Out(), " Kernel Version:", info.KernelVersion)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Operating System:", info.OperatingSystem)
|
fprintlnNonEmpty(dockerCli.Out(), " Operating System:", info.OperatingSystem)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "OSType:", info.OSType)
|
fprintlnNonEmpty(dockerCli.Out(), " OSType:", info.OSType)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Architecture:", info.Architecture)
|
fprintlnNonEmpty(dockerCli.Out(), " Architecture:", info.Architecture)
|
||||||
fmt.Fprintln(dockerCli.Out(), "CPUs:", info.NCPU)
|
fmt.Fprintln(dockerCli.Out(), " CPUs:", info.NCPU)
|
||||||
fmt.Fprintln(dockerCli.Out(), "Total Memory:", units.BytesSize(float64(info.MemTotal)))
|
fmt.Fprintln(dockerCli.Out(), " Total Memory:", units.BytesSize(float64(info.MemTotal)))
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Name:", info.Name)
|
fprintlnNonEmpty(dockerCli.Out(), " Name:", info.Name)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "ID:", info.ID)
|
fprintlnNonEmpty(dockerCli.Out(), " ID:", info.ID)
|
||||||
fmt.Fprintln(dockerCli.Out(), "Docker Root Dir:", info.DockerRootDir)
|
fmt.Fprintln(dockerCli.Out(), " Docker Root Dir:", info.DockerRootDir)
|
||||||
fmt.Fprintln(dockerCli.Out(), "Debug Mode (client):", debug.IsEnabled())
|
fmt.Fprintln(dockerCli.Out(), " Debug Mode:", info.Debug)
|
||||||
fmt.Fprintln(dockerCli.Out(), "Debug Mode (server):", info.Debug)
|
|
||||||
|
|
||||||
if info.Debug {
|
if info.Debug {
|
||||||
fmt.Fprintln(dockerCli.Out(), " File Descriptors:", info.NFd)
|
fmt.Fprintln(dockerCli.Out(), " File Descriptors:", info.NFd)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Goroutines:", info.NGoroutines)
|
fmt.Fprintln(dockerCli.Out(), " Goroutines:", info.NGoroutines)
|
||||||
fmt.Fprintln(dockerCli.Out(), " System Time:", info.SystemTime)
|
fmt.Fprintln(dockerCli.Out(), " System Time:", info.SystemTime)
|
||||||
fmt.Fprintln(dockerCli.Out(), " EventsListeners:", info.NEventsListener)
|
fmt.Fprintln(dockerCli.Out(), " EventsListeners:", info.NEventsListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "HTTP Proxy:", info.HTTPProxy)
|
fprintlnNonEmpty(dockerCli.Out(), " HTTP Proxy:", info.HTTPProxy)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "HTTPS Proxy:", info.HTTPSProxy)
|
fprintlnNonEmpty(dockerCli.Out(), " HTTPS Proxy:", info.HTTPSProxy)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "No Proxy:", info.NoProxy)
|
fprintlnNonEmpty(dockerCli.Out(), " No Proxy:", info.NoProxy)
|
||||||
|
|
||||||
if info.IndexServerAddress != "" {
|
if info.IndexServerAddress != "" {
|
||||||
u := dockerCli.ConfigFile().AuthConfigs[info.IndexServerAddress].Username
|
u := dockerCli.ConfigFile().AuthConfigs[info.IndexServerAddress].Username
|
||||||
if len(u) > 0 {
|
if len(u) > 0 {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Username:", u)
|
fmt.Fprintln(dockerCli.Out(), " Username:", u)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), "Registry:", info.IndexServerAddress)
|
fmt.Fprintln(dockerCli.Out(), " Registry:", info.IndexServerAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
if info.Labels != nil {
|
if info.Labels != nil {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Labels:")
|
fmt.Fprintln(dockerCli.Out(), " Labels:")
|
||||||
for _, lbl := range info.Labels {
|
for _, lbl := range info.Labels {
|
||||||
fmt.Fprintln(dockerCli.Out(), " "+lbl)
|
fmt.Fprintln(dockerCli.Out(), " "+lbl)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintln(dockerCli.Out(), "Experimental:", info.ExperimentalBuild)
|
fmt.Fprintln(dockerCli.Out(), " Experimental:", info.ExperimentalBuild)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Cluster Store:", info.ClusterStore)
|
fprintlnNonEmpty(dockerCli.Out(), " Cluster Store:", info.ClusterStore)
|
||||||
fprintlnNonEmpty(dockerCli.Out(), "Cluster Advertise:", info.ClusterAdvertise)
|
fprintlnNonEmpty(dockerCli.Out(), " Cluster Advertise:", info.ClusterAdvertise)
|
||||||
|
|
||||||
if info.RegistryConfig != nil && (len(info.RegistryConfig.InsecureRegistryCIDRs) > 0 || len(info.RegistryConfig.IndexConfigs) > 0) {
|
if info.RegistryConfig != nil && (len(info.RegistryConfig.InsecureRegistryCIDRs) > 0 || len(info.RegistryConfig.IndexConfigs) > 0) {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Insecure Registries:")
|
fmt.Fprintln(dockerCli.Out(), " Insecure Registries:")
|
||||||
for _, registry := range info.RegistryConfig.IndexConfigs {
|
for _, registry := range info.RegistryConfig.IndexConfigs {
|
||||||
if !registry.Secure {
|
if !registry.Secure {
|
||||||
fmt.Fprintln(dockerCli.Out(), " "+registry.Name)
|
fmt.Fprintln(dockerCli.Out(), " "+registry.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, registry := range info.RegistryConfig.InsecureRegistryCIDRs {
|
for _, registry := range info.RegistryConfig.InsecureRegistryCIDRs {
|
||||||
mask, _ := registry.Mask.Size()
|
mask, _ := registry.Mask.Size()
|
||||||
fmt.Fprintf(dockerCli.Out(), " %s/%d\n", registry.IP.String(), mask)
|
fmt.Fprintf(dockerCli.Out(), " %s/%d\n", registry.IP.String(), mask)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if info.RegistryConfig != nil && len(info.RegistryConfig.Mirrors) > 0 {
|
if info.RegistryConfig != nil && len(info.RegistryConfig.Mirrors) > 0 {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Registry Mirrors:")
|
fmt.Fprintln(dockerCli.Out(), " Registry Mirrors:")
|
||||||
for _, mirror := range info.RegistryConfig.Mirrors {
|
for _, mirror := range info.RegistryConfig.Mirrors {
|
||||||
fmt.Fprintln(dockerCli.Out(), " "+mirror)
|
fmt.Fprintln(dockerCli.Out(), " "+mirror)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintln(dockerCli.Out(), "Live Restore Enabled:", info.LiveRestoreEnabled)
|
fmt.Fprintln(dockerCli.Out(), " Live Restore Enabled:", info.LiveRestoreEnabled)
|
||||||
if info.ProductLicense != "" {
|
if info.ProductLicense != "" {
|
||||||
fmt.Fprintln(dockerCli.Out(), "Product License:", info.ProductLicense)
|
fmt.Fprintln(dockerCli.Out(), " Product License:", info.ProductLicense)
|
||||||
}
|
}
|
||||||
fmt.Fprint(dockerCli.Out(), "\n")
|
fmt.Fprint(dockerCli.Out(), "\n")
|
||||||
|
|
||||||
printWarnings(dockerCli, info)
|
printServerWarnings(dockerCli, info)
|
||||||
return nil
|
return errs
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint: gocyclo
|
// nolint: gocyclo
|
||||||
|
@ -218,87 +282,87 @@ func printSwarmInfo(dockerCli command.Cli, info types.Info) {
|
||||||
if info.Swarm.LocalNodeState == swarm.LocalNodeStateInactive || info.Swarm.LocalNodeState == swarm.LocalNodeStateLocked {
|
if info.Swarm.LocalNodeState == swarm.LocalNodeStateInactive || info.Swarm.LocalNodeState == swarm.LocalNodeStateLocked {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " NodeID:", info.Swarm.NodeID)
|
fmt.Fprintln(dockerCli.Out(), " NodeID:", info.Swarm.NodeID)
|
||||||
if info.Swarm.Error != "" {
|
if info.Swarm.Error != "" {
|
||||||
fmt.Fprintln(dockerCli.Out(), " Error:", info.Swarm.Error)
|
fmt.Fprintln(dockerCli.Out(), " Error:", info.Swarm.Error)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Is Manager:", info.Swarm.ControlAvailable)
|
fmt.Fprintln(dockerCli.Out(), " Is Manager:", info.Swarm.ControlAvailable)
|
||||||
if info.Swarm.Cluster != nil && info.Swarm.ControlAvailable && info.Swarm.Error == "" && info.Swarm.LocalNodeState != swarm.LocalNodeStateError {
|
if info.Swarm.Cluster != nil && info.Swarm.ControlAvailable && info.Swarm.Error == "" && info.Swarm.LocalNodeState != swarm.LocalNodeStateError {
|
||||||
fmt.Fprintln(dockerCli.Out(), " ClusterID:", info.Swarm.Cluster.ID)
|
fmt.Fprintln(dockerCli.Out(), " ClusterID:", info.Swarm.Cluster.ID)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Managers:", info.Swarm.Managers)
|
fmt.Fprintln(dockerCli.Out(), " Managers:", info.Swarm.Managers)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Nodes:", info.Swarm.Nodes)
|
fmt.Fprintln(dockerCli.Out(), " Nodes:", info.Swarm.Nodes)
|
||||||
var strAddrPool strings.Builder
|
var strAddrPool strings.Builder
|
||||||
if info.Swarm.Cluster.DefaultAddrPool != nil {
|
if info.Swarm.Cluster.DefaultAddrPool != nil {
|
||||||
for _, p := range info.Swarm.Cluster.DefaultAddrPool {
|
for _, p := range info.Swarm.Cluster.DefaultAddrPool {
|
||||||
strAddrPool.WriteString(p + " ")
|
strAddrPool.WriteString(p + " ")
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Default Address Pool:", strAddrPool.String())
|
fmt.Fprintln(dockerCli.Out(), " Default Address Pool:", strAddrPool.String())
|
||||||
fmt.Fprintln(dockerCli.Out(), " SubnetSize:", info.Swarm.Cluster.SubnetSize)
|
fmt.Fprintln(dockerCli.Out(), " SubnetSize:", info.Swarm.Cluster.SubnetSize)
|
||||||
}
|
}
|
||||||
if info.Swarm.Cluster.DataPathPort > 0 {
|
if info.Swarm.Cluster.DataPathPort > 0 {
|
||||||
fmt.Fprintln(dockerCli.Out(), " Data Path Port:", info.Swarm.Cluster.DataPathPort)
|
fmt.Fprintln(dockerCli.Out(), " Data Path Port:", info.Swarm.Cluster.DataPathPort)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Orchestration:")
|
fmt.Fprintln(dockerCli.Out(), " Orchestration:")
|
||||||
|
|
||||||
taskHistoryRetentionLimit := int64(0)
|
taskHistoryRetentionLimit := int64(0)
|
||||||
if info.Swarm.Cluster.Spec.Orchestration.TaskHistoryRetentionLimit != nil {
|
if info.Swarm.Cluster.Spec.Orchestration.TaskHistoryRetentionLimit != nil {
|
||||||
taskHistoryRetentionLimit = *info.Swarm.Cluster.Spec.Orchestration.TaskHistoryRetentionLimit
|
taskHistoryRetentionLimit = *info.Swarm.Cluster.Spec.Orchestration.TaskHistoryRetentionLimit
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Task History Retention Limit:", taskHistoryRetentionLimit)
|
fmt.Fprintln(dockerCli.Out(), " Task History Retention Limit:", taskHistoryRetentionLimit)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Raft:")
|
fmt.Fprintln(dockerCli.Out(), " Raft:")
|
||||||
fmt.Fprintln(dockerCli.Out(), " Snapshot Interval:", info.Swarm.Cluster.Spec.Raft.SnapshotInterval)
|
fmt.Fprintln(dockerCli.Out(), " Snapshot Interval:", info.Swarm.Cluster.Spec.Raft.SnapshotInterval)
|
||||||
if info.Swarm.Cluster.Spec.Raft.KeepOldSnapshots != nil {
|
if info.Swarm.Cluster.Spec.Raft.KeepOldSnapshots != nil {
|
||||||
fmt.Fprintf(dockerCli.Out(), " Number of Old Snapshots to Retain: %d\n", *info.Swarm.Cluster.Spec.Raft.KeepOldSnapshots)
|
fmt.Fprintf(dockerCli.Out(), " Number of Old Snapshots to Retain: %d\n", *info.Swarm.Cluster.Spec.Raft.KeepOldSnapshots)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Heartbeat Tick:", info.Swarm.Cluster.Spec.Raft.HeartbeatTick)
|
fmt.Fprintln(dockerCli.Out(), " Heartbeat Tick:", info.Swarm.Cluster.Spec.Raft.HeartbeatTick)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Election Tick:", info.Swarm.Cluster.Spec.Raft.ElectionTick)
|
fmt.Fprintln(dockerCli.Out(), " Election Tick:", info.Swarm.Cluster.Spec.Raft.ElectionTick)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Dispatcher:")
|
fmt.Fprintln(dockerCli.Out(), " Dispatcher:")
|
||||||
fmt.Fprintln(dockerCli.Out(), " Heartbeat Period:", units.HumanDuration(info.Swarm.Cluster.Spec.Dispatcher.HeartbeatPeriod))
|
fmt.Fprintln(dockerCli.Out(), " Heartbeat Period:", units.HumanDuration(info.Swarm.Cluster.Spec.Dispatcher.HeartbeatPeriod))
|
||||||
fmt.Fprintln(dockerCli.Out(), " CA Configuration:")
|
fmt.Fprintln(dockerCli.Out(), " CA Configuration:")
|
||||||
fmt.Fprintln(dockerCli.Out(), " Expiry Duration:", units.HumanDuration(info.Swarm.Cluster.Spec.CAConfig.NodeCertExpiry))
|
fmt.Fprintln(dockerCli.Out(), " Expiry Duration:", units.HumanDuration(info.Swarm.Cluster.Spec.CAConfig.NodeCertExpiry))
|
||||||
fmt.Fprintln(dockerCli.Out(), " Force Rotate:", info.Swarm.Cluster.Spec.CAConfig.ForceRotate)
|
fmt.Fprintln(dockerCli.Out(), " Force Rotate:", info.Swarm.Cluster.Spec.CAConfig.ForceRotate)
|
||||||
if caCert := strings.TrimSpace(info.Swarm.Cluster.Spec.CAConfig.SigningCACert); caCert != "" {
|
if caCert := strings.TrimSpace(info.Swarm.Cluster.Spec.CAConfig.SigningCACert); caCert != "" {
|
||||||
fmt.Fprintf(dockerCli.Out(), " Signing CA Certificate: \n%s\n\n", caCert)
|
fmt.Fprintf(dockerCli.Out(), " Signing CA Certificate: \n%s\n\n", caCert)
|
||||||
}
|
}
|
||||||
if len(info.Swarm.Cluster.Spec.CAConfig.ExternalCAs) > 0 {
|
if len(info.Swarm.Cluster.Spec.CAConfig.ExternalCAs) > 0 {
|
||||||
fmt.Fprintln(dockerCli.Out(), " External CAs:")
|
fmt.Fprintln(dockerCli.Out(), " External CAs:")
|
||||||
for _, entry := range info.Swarm.Cluster.Spec.CAConfig.ExternalCAs {
|
for _, entry := range info.Swarm.Cluster.Spec.CAConfig.ExternalCAs {
|
||||||
fmt.Fprintf(dockerCli.Out(), " %s: %s\n", entry.Protocol, entry.URL)
|
fmt.Fprintf(dockerCli.Out(), " %s: %s\n", entry.Protocol, entry.URL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Autolock Managers:", info.Swarm.Cluster.Spec.EncryptionConfig.AutoLockManagers)
|
fmt.Fprintln(dockerCli.Out(), " Autolock Managers:", info.Swarm.Cluster.Spec.EncryptionConfig.AutoLockManagers)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Root Rotation In Progress:", info.Swarm.Cluster.RootRotationInProgress)
|
fmt.Fprintln(dockerCli.Out(), " Root Rotation In Progress:", info.Swarm.Cluster.RootRotationInProgress)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(dockerCli.Out(), " Node Address:", info.Swarm.NodeAddr)
|
fmt.Fprintln(dockerCli.Out(), " Node Address:", info.Swarm.NodeAddr)
|
||||||
if len(info.Swarm.RemoteManagers) > 0 {
|
if len(info.Swarm.RemoteManagers) > 0 {
|
||||||
managers := []string{}
|
managers := []string{}
|
||||||
for _, entry := range info.Swarm.RemoteManagers {
|
for _, entry := range info.Swarm.RemoteManagers {
|
||||||
managers = append(managers, entry.Addr)
|
managers = append(managers, entry.Addr)
|
||||||
}
|
}
|
||||||
sort.Strings(managers)
|
sort.Strings(managers)
|
||||||
fmt.Fprintln(dockerCli.Out(), " Manager Addresses:")
|
fmt.Fprintln(dockerCli.Out(), " Manager Addresses:")
|
||||||
for _, entry := range managers {
|
for _, entry := range managers {
|
||||||
fmt.Fprintf(dockerCli.Out(), " %s\n", entry)
|
fmt.Fprintf(dockerCli.Out(), " %s\n", entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func printWarnings(dockerCli command.Cli, info types.Info) {
|
func printServerWarnings(dockerCli command.Cli, info types.Info) {
|
||||||
if len(info.Warnings) > 0 {
|
if len(info.Warnings) > 0 {
|
||||||
fmt.Fprintln(dockerCli.Err(), strings.Join(info.Warnings, "\n"))
|
fmt.Fprintln(dockerCli.Err(), strings.Join(info.Warnings, "\n"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// daemon didn't return warnings. Fallback to old behavior
|
// daemon didn't return warnings. Fallback to old behavior
|
||||||
printStorageDriverWarnings(dockerCli, info)
|
printStorageDriverWarnings(dockerCli, info)
|
||||||
printWarningsLegacy(dockerCli, info)
|
printServerWarningsLegacy(dockerCli, info)
|
||||||
}
|
}
|
||||||
|
|
||||||
// printWarningsLegacy generates warnings based on information returned by the daemon.
|
// printServerWarningsLegacy generates warnings based on information returned by the daemon.
|
||||||
// DEPRECATED: warnings are now generated by the daemon, and returned in
|
// DEPRECATED: warnings are now generated by the daemon, and returned in
|
||||||
// info.Warnings. This function is used to provide backward compatibility with
|
// info.Warnings. This function is used to provide backward compatibility with
|
||||||
// daemons that do not provide these warnings. No new warnings should be added
|
// daemons that do not provide these warnings. No new warnings should be added
|
||||||
// here.
|
// here.
|
||||||
func printWarningsLegacy(dockerCli command.Cli, info types.Info) {
|
func printServerWarningsLegacy(dockerCli command.Cli, info types.Info) {
|
||||||
if info.OSType == "windows" {
|
if info.OSType == "windows" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -382,7 +446,7 @@ func getBackingFs(info types.Info) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func formatInfo(dockerCli command.Cli, info types.Info, format string) error {
|
func formatInfo(dockerCli command.Cli, info info, format string) error {
|
||||||
tmpl, err := templates.Parse(format)
|
tmpl, err := templates.Parse(format)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cli.StatusError{StatusCode: 64,
|
return cli.StatusError{StatusCode: 64,
|
||||||
|
|
|
@ -21,8 +21,10 @@ func base64Decode(val string) []byte {
|
||||||
return decoded
|
return decoded
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const sampleID = "EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX"
|
||||||
|
|
||||||
var sampleInfoNoSwarm = types.Info{
|
var sampleInfoNoSwarm = types.Info{
|
||||||
ID: "EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX",
|
ID: sampleID,
|
||||||
Containers: 0,
|
Containers: 0,
|
||||||
ContainersRunning: 0,
|
ContainersRunning: 0,
|
||||||
ContainersPaused: 0,
|
ContainersPaused: 0,
|
||||||
|
@ -222,44 +224,133 @@ func TestPrettyPrintInfo(t *testing.T) {
|
||||||
"WARNING: bridge-nf-call-ip6tables is disabled",
|
"WARNING: bridge-nf-call-ip6tables is disabled",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sampleInfoBadSecurity := sampleInfoNoSwarm
|
||||||
|
sampleInfoBadSecurity.SecurityOptions = []string{"foo="}
|
||||||
|
|
||||||
for _, tc := range []struct {
|
for _, tc := range []struct {
|
||||||
doc string
|
doc string
|
||||||
dockerInfo types.Info
|
dockerInfo info
|
||||||
expectedGolden string
|
prettyGolden string
|
||||||
warningsGolden string
|
warningsGolden string
|
||||||
|
jsonGolden string
|
||||||
|
expectedError string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
doc: "info without swarm",
|
doc: "info without swarm",
|
||||||
dockerInfo: sampleInfoNoSwarm,
|
dockerInfo: info{
|
||||||
expectedGolden: "docker-info-no-swarm",
|
Info: &sampleInfoNoSwarm,
|
||||||
|
ClientInfo: &clientInfo{Debug: true},
|
||||||
|
},
|
||||||
|
prettyGolden: "docker-info-no-swarm",
|
||||||
|
jsonGolden: "docker-info-no-swarm",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
doc: "info with swarm",
|
doc: "info with swarm",
|
||||||
dockerInfo: infoWithSwarm,
|
dockerInfo: info{
|
||||||
expectedGolden: "docker-info-with-swarm",
|
Info: &infoWithSwarm,
|
||||||
|
ClientInfo: &clientInfo{Debug: false},
|
||||||
|
},
|
||||||
|
prettyGolden: "docker-info-with-swarm",
|
||||||
|
jsonGolden: "docker-info-with-swarm",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
doc: "info with legacy warnings",
|
doc: "info with legacy warnings",
|
||||||
dockerInfo: infoWithWarningsLinux,
|
dockerInfo: info{
|
||||||
expectedGolden: "docker-info-no-swarm",
|
Info: &infoWithWarningsLinux,
|
||||||
|
ClientInfo: &clientInfo{Debug: true},
|
||||||
|
},
|
||||||
|
prettyGolden: "docker-info-no-swarm",
|
||||||
warningsGolden: "docker-info-warnings",
|
warningsGolden: "docker-info-warnings",
|
||||||
|
jsonGolden: "docker-info-legacy-warnings",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
doc: "info with daemon warnings",
|
doc: "info with daemon warnings",
|
||||||
dockerInfo: sampleInfoDaemonWarnings,
|
dockerInfo: info{
|
||||||
expectedGolden: "docker-info-no-swarm",
|
Info: &sampleInfoDaemonWarnings,
|
||||||
|
ClientInfo: &clientInfo{Debug: true},
|
||||||
|
},
|
||||||
|
prettyGolden: "docker-info-no-swarm",
|
||||||
warningsGolden: "docker-info-warnings",
|
warningsGolden: "docker-info-warnings",
|
||||||
|
jsonGolden: "docker-info-daemon-warnings",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
doc: "errors for both",
|
||||||
|
dockerInfo: info{
|
||||||
|
ServerErrors: []string{"a server error occurred"},
|
||||||
|
ClientErrors: []string{"a client error occurred"},
|
||||||
|
},
|
||||||
|
prettyGolden: "docker-info-errors",
|
||||||
|
jsonGolden: "docker-info-errors",
|
||||||
|
expectedError: "errors pretty printing info",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
doc: "bad security info",
|
||||||
|
dockerInfo: info{
|
||||||
|
Info: &sampleInfoBadSecurity,
|
||||||
|
ServerErrors: []string{"an error happened"},
|
||||||
|
ClientInfo: &clientInfo{Debug: false},
|
||||||
|
},
|
||||||
|
prettyGolden: "docker-info-badsec",
|
||||||
|
jsonGolden: "docker-info-badsec",
|
||||||
|
expectedError: "errors pretty printing info",
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
t.Run(tc.doc, func(t *testing.T) {
|
t.Run(tc.doc, func(t *testing.T) {
|
||||||
cli := test.NewFakeCli(&fakeClient{})
|
cli := test.NewFakeCli(&fakeClient{})
|
||||||
assert.NilError(t, prettyPrintInfo(cli, tc.dockerInfo))
|
err := prettyPrintInfo(cli, tc.dockerInfo)
|
||||||
golden.Assert(t, cli.OutBuffer().String(), tc.expectedGolden+".golden")
|
if tc.expectedError == "" {
|
||||||
|
assert.NilError(t, err)
|
||||||
|
} else {
|
||||||
|
assert.Error(t, err, tc.expectedError)
|
||||||
|
}
|
||||||
|
golden.Assert(t, cli.OutBuffer().String(), tc.prettyGolden+".golden")
|
||||||
if tc.warningsGolden != "" {
|
if tc.warningsGolden != "" {
|
||||||
golden.Assert(t, cli.ErrBuffer().String(), tc.warningsGolden+".golden")
|
golden.Assert(t, cli.ErrBuffer().String(), tc.warningsGolden+".golden")
|
||||||
} else {
|
} else {
|
||||||
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
|
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cli = test.NewFakeCli(&fakeClient{})
|
||||||
|
assert.NilError(t, formatInfo(cli, tc.dockerInfo, "{{json .}}"))
|
||||||
|
golden.Assert(t, cli.OutBuffer().String(), tc.jsonGolden+".json.golden")
|
||||||
|
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFormatInfo(t *testing.T) {
|
||||||
|
for _, tc := range []struct {
|
||||||
|
doc string
|
||||||
|
template string
|
||||||
|
expectedError string
|
||||||
|
expectedOut string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
doc: "basic",
|
||||||
|
template: "{{.ID}}",
|
||||||
|
expectedOut: sampleID + "\n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
doc: "syntax",
|
||||||
|
template: "{{}",
|
||||||
|
expectedError: `Status: Template parsing error: template: :1: unexpected "}" in command, Code: 64`,
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
t.Run(tc.doc, func(t *testing.T) {
|
||||||
|
cli := test.NewFakeCli(&fakeClient{})
|
||||||
|
info := info{
|
||||||
|
Info: &sampleInfoNoSwarm,
|
||||||
|
ClientInfo: &clientInfo{Debug: true},
|
||||||
|
}
|
||||||
|
err := formatInfo(cli, info, tc.template)
|
||||||
|
if tc.expectedOut != "" {
|
||||||
|
assert.NilError(t, err)
|
||||||
|
assert.Equal(t, cli.OutBuffer().String(), tc.expectedOut)
|
||||||
|
} else if tc.expectedError != "" {
|
||||||
|
assert.Error(t, err, tc.expectedError)
|
||||||
|
} else {
|
||||||
|
t.Fatal("test expected to neither pass nor fail")
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
Client:
|
||||||
|
Debug Mode: false
|
||||||
|
|
||||||
|
Server:
|
||||||
|
Containers: 0
|
||||||
|
Running: 0
|
||||||
|
Paused: 0
|
||||||
|
Stopped: 0
|
||||||
|
Images: 0
|
||||||
|
Server Version: 17.06.1-ce
|
||||||
|
Storage Driver: aufs
|
||||||
|
Root Dir: /var/lib/docker/aufs
|
||||||
|
Backing Filesystem: extfs
|
||||||
|
Dirs: 0
|
||||||
|
Dirperm1 Supported: true
|
||||||
|
Logging Driver: json-file
|
||||||
|
Cgroup Driver: cgroupfs
|
||||||
|
Plugins:
|
||||||
|
Volume: local
|
||||||
|
Network: bridge host macvlan null overlay
|
||||||
|
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
|
||||||
|
Swarm: inactive
|
||||||
|
Runtimes: runc
|
||||||
|
Default Runtime: runc
|
||||||
|
Init Binary: docker-init
|
||||||
|
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
|
||||||
|
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
|
||||||
|
init version: 949e6fa
|
||||||
|
Kernel Version: 4.4.0-87-generic
|
||||||
|
Operating System: Ubuntu 16.04.3 LTS
|
||||||
|
OSType: linux
|
||||||
|
Architecture: x86_64
|
||||||
|
CPUs: 2
|
||||||
|
Total Memory: 1.953GiB
|
||||||
|
Name: system-sample
|
||||||
|
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
|
||||||
|
Docker Root Dir: /var/lib/docker
|
||||||
|
Debug Mode: true
|
||||||
|
File Descriptors: 33
|
||||||
|
Goroutines: 135
|
||||||
|
System Time: 2017-08-24T17:44:34.077811894Z
|
||||||
|
EventsListeners: 0
|
||||||
|
Registry: https://index.docker.io/v1/
|
||||||
|
Labels:
|
||||||
|
provider=digitalocean
|
||||||
|
Experimental: false
|
||||||
|
Insecure Registries:
|
||||||
|
127.0.0.0/8
|
||||||
|
Live Restore Enabled: false
|
||||||
|
|
||||||
|
ERROR: an error happened
|
||||||
|
ERROR: invalid empty security option
|
|
@ -0,0 +1 @@
|
||||||
|
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"aufs","DriverStatus":[["Root Dir","/var/lib/docker/aufs"],["Backing Filesystem","extfs"],["Dirs","0"],["Dirperm1 Supported","true"]],"SystemStatus":null,"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"KernelMemoryTCP":false,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","ClusterStore":"","ClusterAdvertise":"","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["foo="],"Warnings":null,"ServerErrors":["an error happened"],"ClientInfo":{"Debug":false,"Warnings":null}}
|
|
@ -0,0 +1 @@
|
||||||
|
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"aufs","DriverStatus":[["Root Dir","/var/lib/docker/aufs"],["Backing Filesystem","extfs"],["Dirs","0"],["Dirperm1 Supported","true"]],"SystemStatus":null,"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"KernelMemoryTCP":false,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","ClusterStore":"","ClusterAdvertise":"","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"Warnings":["WARNING: No memory limit support","WARNING: No swap limit support","WARNING: No kernel memory limit support","WARNING: No oom kill disable support","WARNING: No cpu cfs quota support","WARNING: No cpu cfs period support","WARNING: No cpu shares support","WARNING: No cpuset support","WARNING: IPv4 forwarding is disabled","WARNING: bridge-nf-call-iptables is disabled","WARNING: bridge-nf-call-ip6tables is disabled"],"ClientInfo":{"Debug":true,"Warnings":null}}
|
|
@ -0,0 +1,5 @@
|
||||||
|
Client:
|
||||||
|
ERROR: a client error occurred
|
||||||
|
|
||||||
|
Server:
|
||||||
|
ERROR: a server error occurred
|
|
@ -0,0 +1 @@
|
||||||
|
{"ServerErrors":["a server error occurred"],"ClientErrors":["a client error occurred"]}
|
|
@ -0,0 +1 @@
|
||||||
|
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"aufs","DriverStatus":[["Root Dir","/var/lib/docker/aufs"],["Backing Filesystem","extfs"],["Dirs","0"],["Dirperm1 Supported","true"]],"SystemStatus":null,"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":false,"SwapLimit":false,"KernelMemory":false,"KernelMemoryTCP":false,"CpuCfsPeriod":false,"CpuCfsQuota":false,"CPUShares":false,"CPUSet":false,"IPv4Forwarding":false,"BridgeNfIptables":false,"BridgeNfIp6tables":false,"Debug":true,"NFd":33,"OomKillDisable":false,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","ClusterStore":"","ClusterAdvertise":"","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"Warnings":null,"ClientInfo":{"Debug":true,"Warnings":null}}
|
|
@ -1,51 +1,54 @@
|
||||||
Containers: 0
|
Client:
|
||||||
Running: 0
|
Debug Mode: true
|
||||||
Paused: 0
|
|
||||||
Stopped: 0
|
Server:
|
||||||
Images: 0
|
Containers: 0
|
||||||
Server Version: 17.06.1-ce
|
Running: 0
|
||||||
Storage Driver: aufs
|
Paused: 0
|
||||||
Root Dir: /var/lib/docker/aufs
|
Stopped: 0
|
||||||
Backing Filesystem: extfs
|
Images: 0
|
||||||
Dirs: 0
|
Server Version: 17.06.1-ce
|
||||||
Dirperm1 Supported: true
|
Storage Driver: aufs
|
||||||
Logging Driver: json-file
|
Root Dir: /var/lib/docker/aufs
|
||||||
Cgroup Driver: cgroupfs
|
Backing Filesystem: extfs
|
||||||
Plugins:
|
Dirs: 0
|
||||||
Volume: local
|
Dirperm1 Supported: true
|
||||||
Network: bridge host macvlan null overlay
|
Logging Driver: json-file
|
||||||
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
|
Cgroup Driver: cgroupfs
|
||||||
Swarm: inactive
|
Plugins:
|
||||||
Runtimes: runc
|
Volume: local
|
||||||
Default Runtime: runc
|
Network: bridge host macvlan null overlay
|
||||||
Init Binary: docker-init
|
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
|
||||||
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
|
Swarm: inactive
|
||||||
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
|
Runtimes: runc
|
||||||
init version: 949e6fa
|
Default Runtime: runc
|
||||||
Security Options:
|
Init Binary: docker-init
|
||||||
apparmor
|
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
|
||||||
seccomp
|
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
|
||||||
Profile: default
|
init version: 949e6fa
|
||||||
Kernel Version: 4.4.0-87-generic
|
Security Options:
|
||||||
Operating System: Ubuntu 16.04.3 LTS
|
apparmor
|
||||||
OSType: linux
|
seccomp
|
||||||
Architecture: x86_64
|
Profile: default
|
||||||
CPUs: 2
|
Kernel Version: 4.4.0-87-generic
|
||||||
Total Memory: 1.953GiB
|
Operating System: Ubuntu 16.04.3 LTS
|
||||||
Name: system-sample
|
OSType: linux
|
||||||
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
|
Architecture: x86_64
|
||||||
Docker Root Dir: /var/lib/docker
|
CPUs: 2
|
||||||
Debug Mode (client): false
|
Total Memory: 1.953GiB
|
||||||
Debug Mode (server): true
|
Name: system-sample
|
||||||
File Descriptors: 33
|
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
|
||||||
Goroutines: 135
|
Docker Root Dir: /var/lib/docker
|
||||||
System Time: 2017-08-24T17:44:34.077811894Z
|
Debug Mode: true
|
||||||
EventsListeners: 0
|
File Descriptors: 33
|
||||||
Registry: https://index.docker.io/v1/
|
Goroutines: 135
|
||||||
Labels:
|
System Time: 2017-08-24T17:44:34.077811894Z
|
||||||
provider=digitalocean
|
EventsListeners: 0
|
||||||
Experimental: false
|
Registry: https://index.docker.io/v1/
|
||||||
Insecure Registries:
|
Labels:
|
||||||
127.0.0.0/8
|
provider=digitalocean
|
||||||
Live Restore Enabled: false
|
Experimental: false
|
||||||
|
Insecure Registries:
|
||||||
|
127.0.0.0/8
|
||||||
|
Live Restore Enabled: false
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"aufs","DriverStatus":[["Root Dir","/var/lib/docker/aufs"],["Backing Filesystem","extfs"],["Dirs","0"],["Dirperm1 Supported","true"]],"SystemStatus":null,"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"KernelMemoryTCP":false,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","ClusterStore":"","ClusterAdvertise":"","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"Warnings":null,"ClientInfo":{"Debug":true,"Warnings":null}}
|
|
@ -1,73 +1,76 @@
|
||||||
Containers: 0
|
Client:
|
||||||
Running: 0
|
Debug Mode: false
|
||||||
Paused: 0
|
|
||||||
Stopped: 0
|
Server:
|
||||||
Images: 0
|
Containers: 0
|
||||||
Server Version: 17.06.1-ce
|
Running: 0
|
||||||
Storage Driver: aufs
|
Paused: 0
|
||||||
Root Dir: /var/lib/docker/aufs
|
Stopped: 0
|
||||||
Backing Filesystem: extfs
|
Images: 0
|
||||||
Dirs: 0
|
Server Version: 17.06.1-ce
|
||||||
Dirperm1 Supported: true
|
Storage Driver: aufs
|
||||||
Logging Driver: json-file
|
Root Dir: /var/lib/docker/aufs
|
||||||
Cgroup Driver: cgroupfs
|
Backing Filesystem: extfs
|
||||||
Plugins:
|
Dirs: 0
|
||||||
Volume: local
|
Dirperm1 Supported: true
|
||||||
Network: bridge host macvlan null overlay
|
Logging Driver: json-file
|
||||||
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
|
Cgroup Driver: cgroupfs
|
||||||
Swarm: active
|
Plugins:
|
||||||
NodeID: qo2dfdig9mmxqkawulggepdih
|
Volume: local
|
||||||
Is Manager: true
|
Network: bridge host macvlan null overlay
|
||||||
ClusterID: 9vs5ygs0gguyyec4iqf2314c0
|
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
|
||||||
Managers: 1
|
Swarm: active
|
||||||
Nodes: 1
|
NodeID: qo2dfdig9mmxqkawulggepdih
|
||||||
Orchestration:
|
Is Manager: true
|
||||||
Task History Retention Limit: 5
|
ClusterID: 9vs5ygs0gguyyec4iqf2314c0
|
||||||
Raft:
|
Managers: 1
|
||||||
Snapshot Interval: 10000
|
Nodes: 1
|
||||||
Number of Old Snapshots to Retain: 0
|
Orchestration:
|
||||||
Heartbeat Tick: 1
|
Task History Retention Limit: 5
|
||||||
Election Tick: 3
|
Raft:
|
||||||
Dispatcher:
|
Snapshot Interval: 10000
|
||||||
Heartbeat Period: 5 seconds
|
Number of Old Snapshots to Retain: 0
|
||||||
CA Configuration:
|
Heartbeat Tick: 1
|
||||||
Expiry Duration: 3 months
|
Election Tick: 3
|
||||||
Force Rotate: 0
|
Dispatcher:
|
||||||
Autolock Managers: true
|
Heartbeat Period: 5 seconds
|
||||||
Root Rotation In Progress: false
|
CA Configuration:
|
||||||
Node Address: 165.227.107.89
|
Expiry Duration: 3 months
|
||||||
Manager Addresses:
|
Force Rotate: 0
|
||||||
165.227.107.89:2377
|
Autolock Managers: true
|
||||||
Runtimes: runc
|
Root Rotation In Progress: false
|
||||||
Default Runtime: runc
|
Node Address: 165.227.107.89
|
||||||
Init Binary: docker-init
|
Manager Addresses:
|
||||||
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
|
165.227.107.89:2377
|
||||||
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
|
Runtimes: runc
|
||||||
init version: 949e6fa
|
Default Runtime: runc
|
||||||
Security Options:
|
Init Binary: docker-init
|
||||||
apparmor
|
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
|
||||||
seccomp
|
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
|
||||||
Profile: default
|
init version: 949e6fa
|
||||||
Kernel Version: 4.4.0-87-generic
|
Security Options:
|
||||||
Operating System: Ubuntu 16.04.3 LTS
|
apparmor
|
||||||
OSType: linux
|
seccomp
|
||||||
Architecture: x86_64
|
Profile: default
|
||||||
CPUs: 2
|
Kernel Version: 4.4.0-87-generic
|
||||||
Total Memory: 1.953GiB
|
Operating System: Ubuntu 16.04.3 LTS
|
||||||
Name: system-sample
|
OSType: linux
|
||||||
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
|
Architecture: x86_64
|
||||||
Docker Root Dir: /var/lib/docker
|
CPUs: 2
|
||||||
Debug Mode (client): false
|
Total Memory: 1.953GiB
|
||||||
Debug Mode (server): true
|
Name: system-sample
|
||||||
File Descriptors: 33
|
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
|
||||||
Goroutines: 135
|
Docker Root Dir: /var/lib/docker
|
||||||
System Time: 2017-08-24T17:44:34.077811894Z
|
Debug Mode: true
|
||||||
EventsListeners: 0
|
File Descriptors: 33
|
||||||
Registry: https://index.docker.io/v1/
|
Goroutines: 135
|
||||||
Labels:
|
System Time: 2017-08-24T17:44:34.077811894Z
|
||||||
provider=digitalocean
|
EventsListeners: 0
|
||||||
Experimental: false
|
Registry: https://index.docker.io/v1/
|
||||||
Insecure Registries:
|
Labels:
|
||||||
127.0.0.0/8
|
provider=digitalocean
|
||||||
Live Restore Enabled: false
|
Experimental: false
|
||||||
|
Insecure Registries:
|
||||||
|
127.0.0.0/8
|
||||||
|
Live Restore Enabled: false
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"aufs","DriverStatus":[["Root Dir","/var/lib/docker/aufs"],["Backing Filesystem","extfs"],["Dirs","0"],["Dirperm1 Supported","true"]],"SystemStatus":null,"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"KernelMemoryTCP":false,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","ClusterStore":"","ClusterAdvertise":"","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"qo2dfdig9mmxqkawulggepdih","NodeAddr":"165.227.107.89","LocalNodeState":"active","ControlAvailable":true,"Error":"","RemoteManagers":[{"NodeID":"qo2dfdig9mmxqkawulggepdih","Addr":"165.227.107.89:2377"}],"Nodes":1,"Managers":1,"Cluster":{"ID":"9vs5ygs0gguyyec4iqf2314c0","Version":{"Index":11},"CreatedAt":"2017-08-24T17:34:19.278062352Z","UpdatedAt":"2017-08-24T17:34:42.398815481Z","Spec":{"Name":"default","Labels":null,"Orchestration":{"TaskHistoryRetentionLimit":5},"Raft":{"SnapshotInterval":10000,"KeepOldSnapshots":0,"LogEntriesForSlowFollowers":500,"ElectionTick":3,"HeartbeatTick":1},"Dispatcher":{"HeartbeatPeriod":5000000000},"CAConfig":{"NodeCertExpiry":7776000000000000},"TaskDefaults":{},"EncryptionConfig":{"AutoLockManagers":true}},"TLSInfo":{"TrustRoot":"\n-----BEGIN CERTIFICATE-----\nMIIBajCCARCgAwIBAgIUaFCW5xsq8eyiJ+Pmcv3MCflMLnMwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwODI0MTcyOTAwWhcNMzcwODE5MTcy\nOTAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABDy7NebyUJyUjWJDBUdnZoV6GBxEGKO4TZPNDwnxDxJcUdLVaB7WGa4/DLrW\nUfsVgh1JGik2VTiLuTMA1tLlNPOjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQl16XFtaaXiUAwEuJptJlDjfKskDAKBggqhkjO\nPQQDAgNIADBFAiEAo9fTQNM5DP9bHVcTJYfl2Cay1bFu1E+lnpmN+EYJfeACIGKH\n1pCUkZ+D0IB6CiEZGWSHyLuXPM1rlP+I5KuS7sB8\n-----END CERTIFICATE-----\n","CertIssuerSubject":"MBMxETAPBgNVBAMTCHN3YXJtLWNh","CertIssuerPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPLs15vJQnJSNYkMFR2dmhXoYHEQYo7hNk80PCfEPElxR0tVoHtYZrj8MutZR+xWCHUkaKTZVOIu5MwDW0uU08w=="},"RootRotationInProgress":false,"DefaultAddrPool":null,"SubnetSize":0,"DataPathPort":0}},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"Warnings":null,"ClientInfo":{"Debug":false,"Warnings":null}}
|
|
@ -55,56 +55,58 @@ information about the `devicemapper` storage driver is shown:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker info
|
$ docker info
|
||||||
|
Client:
|
||||||
|
Debug Mode: false
|
||||||
|
|
||||||
Containers: 14
|
Server:
|
||||||
Running: 3
|
Containers: 14
|
||||||
Paused: 1
|
Running: 3
|
||||||
Stopped: 10
|
Paused: 1
|
||||||
Images: 52
|
Stopped: 10
|
||||||
Server Version: 1.10.3
|
Images: 52
|
||||||
Storage Driver: devicemapper
|
Server Version: 1.10.3
|
||||||
Pool Name: docker-202:2-25583803-pool
|
Storage Driver: devicemapper
|
||||||
Pool Blocksize: 65.54 kB
|
Pool Name: docker-202:2-25583803-pool
|
||||||
Base Device Size: 10.74 GB
|
Pool Blocksize: 65.54 kB
|
||||||
Backing Filesystem: xfs
|
Base Device Size: 10.74 GB
|
||||||
Data file: /dev/loop0
|
Backing Filesystem: xfs
|
||||||
Metadata file: /dev/loop1
|
Data file: /dev/loop0
|
||||||
Data Space Used: 1.68 GB
|
Metadata file: /dev/loop1
|
||||||
Data Space Total: 107.4 GB
|
Data Space Used: 1.68 GB
|
||||||
Data Space Available: 7.548 GB
|
Data Space Total: 107.4 GB
|
||||||
Metadata Space Used: 2.322 MB
|
Data Space Available: 7.548 GB
|
||||||
Metadata Space Total: 2.147 GB
|
Metadata Space Used: 2.322 MB
|
||||||
Metadata Space Available: 2.145 GB
|
Metadata Space Total: 2.147 GB
|
||||||
Udev Sync Supported: true
|
Metadata Space Available: 2.145 GB
|
||||||
Deferred Removal Enabled: false
|
Udev Sync Supported: true
|
||||||
Deferred Deletion Enabled: false
|
Deferred Removal Enabled: false
|
||||||
Deferred Deleted Device Count: 0
|
Deferred Deletion Enabled: false
|
||||||
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
|
Deferred Deleted Device Count: 0
|
||||||
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
|
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
|
||||||
Library Version: 1.02.107-RHEL7 (2015-12-01)
|
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
|
||||||
Execution Driver: native-0.2
|
Library Version: 1.02.107-RHEL7 (2015-12-01)
|
||||||
Logging Driver: json-file
|
Execution Driver: native-0.2
|
||||||
Plugins:
|
Logging Driver: json-file
|
||||||
Volume: local
|
Plugins:
|
||||||
Network: null host bridge
|
Volume: local
|
||||||
Kernel Version: 3.10.0-327.el7.x86_64
|
Network: null host bridge
|
||||||
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
|
Kernel Version: 3.10.0-327.el7.x86_64
|
||||||
OSType: linux
|
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
|
||||||
Architecture: x86_64
|
OSType: linux
|
||||||
CPUs: 1
|
Architecture: x86_64
|
||||||
Total Memory: 991.7 MiB
|
CPUs: 1
|
||||||
Name: ip-172-30-0-91.ec2.internal
|
Total Memory: 991.7 MiB
|
||||||
ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S
|
Name: ip-172-30-0-91.ec2.internal
|
||||||
Docker Root Dir: /var/lib/docker
|
ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S
|
||||||
Debug mode (client): false
|
Docker Root Dir: /var/lib/docker
|
||||||
Debug mode (server): false
|
Debug Mode: false
|
||||||
Username: gordontheturtle
|
Username: gordontheturtle
|
||||||
Registry: https://index.docker.io/v1/
|
Registry: https://index.docker.io/v1/
|
||||||
Insecure registries:
|
Insecure registries:
|
||||||
myinsecurehost:5000
|
myinsecurehost:5000
|
||||||
127.0.0.0/8
|
127.0.0.0/8
|
||||||
```
|
```
|
||||||
|
|
||||||
### Show debugging output
|
### Show debugging output
|
||||||
|
|
||||||
Here is a sample output for a daemon running on Ubuntu, using the overlay2
|
Here is a sample output for a daemon running on Ubuntu, using the overlay2
|
||||||
|
@ -112,83 +114,85 @@ storage driver and a node that is part of a 2-node swarm:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker -D info
|
$ docker -D info
|
||||||
|
Client:
|
||||||
|
Debug Mode: true
|
||||||
|
|
||||||
Containers: 14
|
Server:
|
||||||
Running: 3
|
Containers: 14
|
||||||
Paused: 1
|
Running: 3
|
||||||
Stopped: 10
|
Paused: 1
|
||||||
Images: 52
|
Stopped: 10
|
||||||
Server Version: 1.13.0
|
Images: 52
|
||||||
Storage Driver: overlay2
|
Server Version: 1.13.0
|
||||||
Backing Filesystem: extfs
|
Storage Driver: overlay2
|
||||||
Supports d_type: true
|
Backing Filesystem: extfs
|
||||||
Native Overlay Diff: false
|
Supports d_type: true
|
||||||
Logging Driver: json-file
|
Native Overlay Diff: false
|
||||||
Cgroup Driver: cgroupfs
|
Logging Driver: json-file
|
||||||
Plugins:
|
Cgroup Driver: cgroupfs
|
||||||
Volume: local
|
Plugins:
|
||||||
Network: bridge host macvlan null overlay
|
Volume: local
|
||||||
Swarm: active
|
Network: bridge host macvlan null overlay
|
||||||
NodeID: rdjq45w1op418waxlairloqbm
|
Swarm: active
|
||||||
Is Manager: true
|
NodeID: rdjq45w1op418waxlairloqbm
|
||||||
ClusterID: te8kdyw33n36fqiz74bfjeixd
|
Is Manager: true
|
||||||
Managers: 1
|
ClusterID: te8kdyw33n36fqiz74bfjeixd
|
||||||
Nodes: 2
|
Managers: 1
|
||||||
Orchestration:
|
Nodes: 2
|
||||||
Task History Retention Limit: 5
|
Orchestration:
|
||||||
Raft:
|
Task History Retention Limit: 5
|
||||||
Snapshot Interval: 10000
|
Raft:
|
||||||
Number of Old Snapshots to Retain: 0
|
Snapshot Interval: 10000
|
||||||
Heartbeat Tick: 1
|
Number of Old Snapshots to Retain: 0
|
||||||
Election Tick: 3
|
Heartbeat Tick: 1
|
||||||
Dispatcher:
|
Election Tick: 3
|
||||||
Heartbeat Period: 5 seconds
|
Dispatcher:
|
||||||
CA Configuration:
|
Heartbeat Period: 5 seconds
|
||||||
Expiry Duration: 3 months
|
CA Configuration:
|
||||||
Root Rotation In Progress: false
|
Expiry Duration: 3 months
|
||||||
Node Address: 172.16.66.128 172.16.66.129
|
Root Rotation In Progress: false
|
||||||
Manager Addresses:
|
Node Address: 172.16.66.128 172.16.66.129
|
||||||
172.16.66.128:2477
|
Manager Addresses:
|
||||||
Runtimes: runc
|
172.16.66.128:2477
|
||||||
Default Runtime: runc
|
Runtimes: runc
|
||||||
Init Binary: docker-init
|
Default Runtime: runc
|
||||||
containerd version: 8517738ba4b82aff5662c97ca4627e7e4d03b531
|
Init Binary: docker-init
|
||||||
runc version: ac031b5bf1cc92239461125f4c1ffb760522bbf2
|
containerd version: 8517738ba4b82aff5662c97ca4627e7e4d03b531
|
||||||
init version: N/A (expected: v0.13.0)
|
runc version: ac031b5bf1cc92239461125f4c1ffb760522bbf2
|
||||||
Security Options:
|
init version: N/A (expected: v0.13.0)
|
||||||
apparmor
|
Security Options:
|
||||||
seccomp
|
apparmor
|
||||||
Profile: default
|
seccomp
|
||||||
Kernel Version: 4.4.0-31-generic
|
Profile: default
|
||||||
Operating System: Ubuntu 16.04.1 LTS
|
Kernel Version: 4.4.0-31-generic
|
||||||
OSType: linux
|
Operating System: Ubuntu 16.04.1 LTS
|
||||||
Architecture: x86_64
|
OSType: linux
|
||||||
CPUs: 2
|
Architecture: x86_64
|
||||||
Total Memory: 1.937 GiB
|
CPUs: 2
|
||||||
Name: ubuntu
|
Total Memory: 1.937 GiB
|
||||||
ID: H52R:7ZR6:EIIA:76JG:ORIY:BVKF:GSFU:HNPG:B5MK:APSC:SZ3Q:N326
|
Name: ubuntu
|
||||||
Docker Root Dir: /var/lib/docker
|
ID: H52R:7ZR6:EIIA:76JG:ORIY:BVKF:GSFU:HNPG:B5MK:APSC:SZ3Q:N326
|
||||||
Debug Mode (client): true
|
Docker Root Dir: /var/lib/docker
|
||||||
Debug Mode (server): true
|
Debug Mode: true
|
||||||
File Descriptors: 30
|
File Descriptors: 30
|
||||||
Goroutines: 123
|
Goroutines: 123
|
||||||
System Time: 2016-11-12T17:24:37.955404361-08:00
|
System Time: 2016-11-12T17:24:37.955404361-08:00
|
||||||
EventsListeners: 0
|
EventsListeners: 0
|
||||||
Http Proxy: http://test:test@proxy.example.com:8080
|
Http Proxy: http://test:test@proxy.example.com:8080
|
||||||
Https Proxy: https://test:test@proxy.example.com:8080
|
Https Proxy: https://test:test@proxy.example.com:8080
|
||||||
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
|
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
|
||||||
Registry: https://index.docker.io/v1/
|
Registry: https://index.docker.io/v1/
|
||||||
WARNING: No swap limit support
|
WARNING: No swap limit support
|
||||||
Labels:
|
Labels:
|
||||||
storage=ssd
|
storage=ssd
|
||||||
staging=true
|
staging=true
|
||||||
Experimental: false
|
Experimental: false
|
||||||
Insecure Registries:
|
Insecure Registries:
|
||||||
127.0.0.0/8
|
127.0.0.0/8
|
||||||
Registry Mirrors:
|
Registry Mirrors:
|
||||||
http://192.168.1.2/
|
http://192.168.1.2/
|
||||||
http://registry-mirror.example.com:5000/
|
http://registry-mirror.example.com:5000/
|
||||||
Live Restore Enabled: false
|
Live Restore Enabled: false
|
||||||
```
|
```
|
||||||
|
|
||||||
The global `-D` option causes all `docker` commands to output debug information.
|
The global `-D` option causes all `docker` commands to output debug information.
|
||||||
|
@ -209,37 +213,39 @@ Here is a sample output for a daemon running on Windows Server 2016:
|
||||||
|
|
||||||
```none
|
```none
|
||||||
E:\docker>docker info
|
E:\docker>docker info
|
||||||
|
Client:
|
||||||
|
Debug Mode: false
|
||||||
|
|
||||||
Containers: 1
|
Server:
|
||||||
Running: 0
|
Containers: 1
|
||||||
Paused: 0
|
Running: 0
|
||||||
Stopped: 1
|
Paused: 0
|
||||||
Images: 17
|
Stopped: 1
|
||||||
Server Version: 1.13.0
|
Images: 17
|
||||||
Storage Driver: windowsfilter
|
Server Version: 1.13.0
|
||||||
Windows:
|
Storage Driver: windowsfilter
|
||||||
Logging Driver: json-file
|
Windows:
|
||||||
Plugins:
|
Logging Driver: json-file
|
||||||
Volume: local
|
Plugins:
|
||||||
Network: nat null overlay
|
Volume: local
|
||||||
Swarm: inactive
|
Network: nat null overlay
|
||||||
Default Isolation: process
|
Swarm: inactive
|
||||||
Kernel Version: 10.0 14393 (14393.206.amd64fre.rs1_release.160912-1937)
|
Default Isolation: process
|
||||||
Operating System: Windows Server 2016 Datacenter
|
Kernel Version: 10.0 14393 (14393.206.amd64fre.rs1_release.160912-1937)
|
||||||
OSType: windows
|
Operating System: Windows Server 2016 Datacenter
|
||||||
Architecture: x86_64
|
OSType: windows
|
||||||
CPUs: 8
|
Architecture: x86_64
|
||||||
Total Memory: 3.999 GiB
|
CPUs: 8
|
||||||
Name: WIN-V0V70C0LU5P
|
Total Memory: 3.999 GiB
|
||||||
ID: NYMS:B5VK:UMSL:FVDZ:EWB5:FKVK:LPFL:FJMQ:H6FT:BZJ6:L2TD:XH62
|
Name: WIN-V0V70C0LU5P
|
||||||
Docker Root Dir: C:\control
|
ID: NYMS:B5VK:UMSL:FVDZ:EWB5:FKVK:LPFL:FJMQ:H6FT:BZJ6:L2TD:XH62
|
||||||
Debug Mode (client): false
|
Docker Root Dir: C:\control
|
||||||
Debug Mode (server): false
|
Debug Mode: false
|
||||||
Registry: https://index.docker.io/v1/
|
Registry: https://index.docker.io/v1/
|
||||||
Insecure Registries:
|
Insecure Registries:
|
||||||
127.0.0.0/8
|
127.0.0.0/8
|
||||||
Registry Mirrors:
|
Registry Mirrors:
|
||||||
http://192.168.1.2/
|
http://192.168.1.2/
|
||||||
http://registry-mirror.example.com:5000/
|
http://registry-mirror.example.com:5000/
|
||||||
Live Restore Enabled: false
|
Live Restore Enabled: false
|
||||||
```
|
```
|
||||||
|
|
|
@ -24,82 +24,85 @@ Here is a sample output for a daemon running on Ubuntu, using the overlay2
|
||||||
storage driver:
|
storage driver:
|
||||||
|
|
||||||
$ docker -D info
|
$ docker -D info
|
||||||
Containers: 14
|
Client:
|
||||||
Running: 3
|
Debug Mode: true
|
||||||
Paused: 1
|
|
||||||
Stopped: 10
|
|
||||||
Images: 52
|
|
||||||
Server Version: 1.13.0
|
|
||||||
Storage Driver: overlay2
|
|
||||||
Backing Filesystem: extfs
|
|
||||||
Supports d_type: true
|
|
||||||
Native Overlay Diff: false
|
|
||||||
Logging Driver: json-file
|
|
||||||
Cgroup Driver: cgroupfs
|
|
||||||
Plugins:
|
|
||||||
Volume: local
|
|
||||||
Network: bridge host macvlan null overlay
|
|
||||||
Swarm: active
|
|
||||||
NodeID: rdjq45w1op418waxlairloqbm
|
|
||||||
Is Manager: true
|
|
||||||
ClusterID: te8kdyw33n36fqiz74bfjeixd
|
|
||||||
Managers: 1
|
|
||||||
Nodes: 2
|
|
||||||
Orchestration:
|
|
||||||
Task History Retention Limit: 5
|
|
||||||
Raft:
|
|
||||||
Snapshot Interval: 10000
|
|
||||||
Number of Old Snapshots to Retain: 0
|
|
||||||
Heartbeat Tick: 1
|
|
||||||
Election Tick: 3
|
|
||||||
Dispatcher:
|
|
||||||
Heartbeat Period: 5 seconds
|
|
||||||
CA Configuration:
|
|
||||||
Expiry Duration: 3 months
|
|
||||||
Node Address: 172.16.66.128 172.16.66.129
|
|
||||||
Manager Addresses:
|
|
||||||
172.16.66.128:2477
|
|
||||||
Runtimes: runc
|
|
||||||
Default Runtime: runc
|
|
||||||
Init Binary: docker-init
|
|
||||||
containerd version: 8517738ba4b82aff5662c97ca4627e7e4d03b531
|
|
||||||
runc version: ac031b5bf1cc92239461125f4c1ffb760522bbf2
|
|
||||||
init version: N/A (expected: v0.13.0)
|
|
||||||
Security Options:
|
|
||||||
apparmor
|
|
||||||
seccomp
|
|
||||||
Profile: default
|
|
||||||
Kernel Version: 4.4.0-31-generic
|
|
||||||
Operating System: Ubuntu 16.04.1 LTS
|
|
||||||
OSType: linux
|
|
||||||
Architecture: x86_64
|
|
||||||
CPUs: 2
|
|
||||||
Total Memory: 1.937 GiB
|
|
||||||
Name: ubuntu
|
|
||||||
ID: H52R:7ZR6:EIIA:76JG:ORIY:BVKF:GSFU:HNPG:B5MK:APSC:SZ3Q:N326
|
|
||||||
Docker Root Dir: /var/lib/docker
|
|
||||||
Debug Mode (client): true
|
|
||||||
Debug Mode (server): true
|
|
||||||
File Descriptors: 30
|
|
||||||
Goroutines: 123
|
|
||||||
System Time: 2016-11-12T17:24:37.955404361-08:00
|
|
||||||
EventsListeners: 0
|
|
||||||
Http Proxy: http://test:test@proxy.example.com:8080
|
|
||||||
Https Proxy: https://test:test@proxy.example.com:8080
|
|
||||||
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
|
|
||||||
Registry: https://index.docker.io/v1/
|
|
||||||
WARNING: No swap limit support
|
|
||||||
Labels:
|
|
||||||
storage=ssd
|
|
||||||
staging=true
|
|
||||||
Experimental: false
|
|
||||||
Insecure Registries:
|
|
||||||
127.0.0.0/8
|
|
||||||
Registry Mirrors:
|
|
||||||
http://192.168.1.2/
|
|
||||||
http://registry-mirror.example.com:5000/
|
|
||||||
Live Restore Enabled: false
|
|
||||||
|
|
||||||
|
Server:
|
||||||
|
Containers: 14
|
||||||
|
Running: 3
|
||||||
|
Paused: 1
|
||||||
|
Stopped: 10
|
||||||
|
Images: 52
|
||||||
|
Server Version: 1.13.0
|
||||||
|
Storage Driver: overlay2
|
||||||
|
Backing Filesystem: extfs
|
||||||
|
Supports d_type: true
|
||||||
|
Native Overlay Diff: false
|
||||||
|
Logging Driver: json-file
|
||||||
|
Cgroup Driver: cgroupfs
|
||||||
|
Plugins:
|
||||||
|
Volume: local
|
||||||
|
Network: bridge host macvlan null overlay
|
||||||
|
Swarm: active
|
||||||
|
NodeID: rdjq45w1op418waxlairloqbm
|
||||||
|
Is Manager: true
|
||||||
|
ClusterID: te8kdyw33n36fqiz74bfjeixd
|
||||||
|
Managers: 1
|
||||||
|
Nodes: 2
|
||||||
|
Orchestration:
|
||||||
|
Task History Retention Limit: 5
|
||||||
|
Raft:
|
||||||
|
Snapshot Interval: 10000
|
||||||
|
Number of Old Snapshots to Retain: 0
|
||||||
|
Heartbeat Tick: 1
|
||||||
|
Election Tick: 3
|
||||||
|
Dispatcher:
|
||||||
|
Heartbeat Period: 5 seconds
|
||||||
|
CA Configuration:
|
||||||
|
Expiry Duration: 3 months
|
||||||
|
Node Address: 172.16.66.128 172.16.66.129
|
||||||
|
Manager Addresses:
|
||||||
|
172.16.66.128:2477
|
||||||
|
Runtimes: runc
|
||||||
|
Default Runtime: runc
|
||||||
|
Init Binary: docker-init
|
||||||
|
containerd version: 8517738ba4b82aff5662c97ca4627e7e4d03b531
|
||||||
|
runc version: ac031b5bf1cc92239461125f4c1ffb760522bbf2
|
||||||
|
init version: N/A (expected: v0.13.0)
|
||||||
|
Security Options:
|
||||||
|
apparmor
|
||||||
|
seccomp
|
||||||
|
Profile: default
|
||||||
|
Kernel Version: 4.4.0-31-generic
|
||||||
|
Operating System: Ubuntu 16.04.1 LTS
|
||||||
|
OSType: linux
|
||||||
|
Architecture: x86_64
|
||||||
|
CPUs: 2
|
||||||
|
Total Memory: 1.937 GiB
|
||||||
|
Name: ubuntu
|
||||||
|
ID: H52R:7ZR6:EIIA:76JG:ORIY:BVKF:GSFU:HNPG:B5MK:APSC:SZ3Q:N326
|
||||||
|
Docker Root Dir: /var/lib/docker
|
||||||
|
Debug Mode: true
|
||||||
|
File Descriptors: 30
|
||||||
|
Goroutines: 123
|
||||||
|
System Time: 2016-11-12T17:24:37.955404361-08:00
|
||||||
|
EventsListeners: 0
|
||||||
|
Http Proxy: http://test:test@proxy.example.com:8080
|
||||||
|
Https Proxy: https://test:test@proxy.example.com:8080
|
||||||
|
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
|
||||||
|
Registry: https://index.docker.io/v1/
|
||||||
|
WARNING: No swap limit support
|
||||||
|
Labels:
|
||||||
|
storage=ssd
|
||||||
|
staging=true
|
||||||
|
Experimental: false
|
||||||
|
Insecure Registries:
|
||||||
|
127.0.0.0/8
|
||||||
|
Registry Mirrors:
|
||||||
|
http://192.168.1.2/
|
||||||
|
http://registry-mirror.example.com:5000/
|
||||||
|
Live Restore Enabled: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The global `-D` option tells all `docker` commands to output debug information.
|
The global `-D` option tells all `docker` commands to output debug information.
|
||||||
|
@ -109,54 +112,57 @@ using the devicemapper storage driver. As can be seen in the output, additional
|
||||||
information about the devicemapper storage driver is shown:
|
information about the devicemapper storage driver is shown:
|
||||||
|
|
||||||
$ docker info
|
$ docker info
|
||||||
Containers: 14
|
Client:
|
||||||
Running: 3
|
Debug Mode: false
|
||||||
Paused: 1
|
|
||||||
Stopped: 10
|
|
||||||
Untagged Images: 52
|
|
||||||
Server Version: 1.10.3
|
|
||||||
Storage Driver: devicemapper
|
|
||||||
Pool Name: docker-202:2-25583803-pool
|
|
||||||
Pool Blocksize: 65.54 kB
|
|
||||||
Base Device Size: 10.74 GB
|
|
||||||
Backing Filesystem: xfs
|
|
||||||
Data file: /dev/loop0
|
|
||||||
Metadata file: /dev/loop1
|
|
||||||
Data Space Used: 1.68 GB
|
|
||||||
Data Space Total: 107.4 GB
|
|
||||||
Data Space Available: 7.548 GB
|
|
||||||
Metadata Space Used: 2.322 MB
|
|
||||||
Metadata Space Total: 2.147 GB
|
|
||||||
Metadata Space Available: 2.145 GB
|
|
||||||
Udev Sync Supported: true
|
|
||||||
Deferred Removal Enabled: false
|
|
||||||
Deferred Deletion Enabled: false
|
|
||||||
Deferred Deleted Device Count: 0
|
|
||||||
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
|
|
||||||
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
|
|
||||||
Library Version: 1.02.107-RHEL7 (2015-12-01)
|
|
||||||
Execution Driver: native-0.2
|
|
||||||
Logging Driver: json-file
|
|
||||||
Plugins:
|
|
||||||
Volume: local
|
|
||||||
Network: null host bridge
|
|
||||||
Kernel Version: 3.10.0-327.el7.x86_64
|
|
||||||
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
|
|
||||||
OSType: linux
|
|
||||||
Architecture: x86_64
|
|
||||||
CPUs: 1
|
|
||||||
Total Memory: 991.7 MiB
|
|
||||||
Name: ip-172-30-0-91.ec2.internal
|
|
||||||
ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S
|
|
||||||
Docker Root Dir: /var/lib/docker
|
|
||||||
Debug mode (client): false
|
|
||||||
Debug mode (server): false
|
|
||||||
Username: gordontheturtle
|
|
||||||
Registry: https://index.docker.io/v1/
|
|
||||||
Insecure registries:
|
|
||||||
myinsecurehost:5000
|
|
||||||
127.0.0.0/8
|
|
||||||
|
|
||||||
|
Server:
|
||||||
|
Containers: 14
|
||||||
|
Running: 3
|
||||||
|
Paused: 1
|
||||||
|
Stopped: 10
|
||||||
|
Untagged Images: 52
|
||||||
|
Server Version: 1.10.3
|
||||||
|
Storage Driver: devicemapper
|
||||||
|
Pool Name: docker-202:2-25583803-pool
|
||||||
|
Pool Blocksize: 65.54 kB
|
||||||
|
Base Device Size: 10.74 GB
|
||||||
|
Backing Filesystem: xfs
|
||||||
|
Data file: /dev/loop0
|
||||||
|
Metadata file: /dev/loop1
|
||||||
|
Data Space Used: 1.68 GB
|
||||||
|
Data Space Total: 107.4 GB
|
||||||
|
Data Space Available: 7.548 GB
|
||||||
|
Metadata Space Used: 2.322 MB
|
||||||
|
Metadata Space Total: 2.147 GB
|
||||||
|
Metadata Space Available: 2.145 GB
|
||||||
|
Udev Sync Supported: true
|
||||||
|
Deferred Removal Enabled: false
|
||||||
|
Deferred Deletion Enabled: false
|
||||||
|
Deferred Deleted Device Count: 0
|
||||||
|
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
|
||||||
|
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
|
||||||
|
Library Version: 1.02.107-RHEL7 (2015-12-01)
|
||||||
|
Execution Driver: native-0.2
|
||||||
|
Logging Driver: json-file
|
||||||
|
Plugins:
|
||||||
|
Volume: local
|
||||||
|
Network: null host bridge
|
||||||
|
Kernel Version: 3.10.0-327.el7.x86_64
|
||||||
|
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
|
||||||
|
OSType: linux
|
||||||
|
Architecture: x86_64
|
||||||
|
CPUs: 1
|
||||||
|
Total Memory: 991.7 MiB
|
||||||
|
Name: ip-172-30-0-91.ec2.internal
|
||||||
|
ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S
|
||||||
|
Docker Root Dir: /var/lib/docker
|
||||||
|
Debug Mode: false
|
||||||
|
Username: gordontheturtle
|
||||||
|
Registry: https://index.docker.io/v1/
|
||||||
|
Insecure registries:
|
||||||
|
myinsecurehost:5000
|
||||||
|
127.0.0.0/8
|
||||||
|
|
||||||
You can also specify the output format:
|
You can also specify the output format:
|
||||||
|
|
||||||
$ docker info --format '{{json .}}'
|
$ docker info --format '{{json .}}'
|
||||||
|
|
Loading…
Reference in New Issue