Rework `docker info` output to be more like `docker version`

That is, reindent the two sections by one space.

While the code was done by hand the `.golden` files had the extra space
inserted with emacs' `string-insert-rectangle` macro to (try to) avoid possible
manual errors. The docs were edited the same way.

Signed-off-by: Ian Campbell <ijc@docker.com>
This commit is contained in:
Ian Campbell 2019-01-25 13:10:59 +00:00
parent c9e60ae17a
commit bcb06b5f58
7 changed files with 554 additions and 574 deletions

View File

@ -79,8 +79,7 @@ func runInfo(dockerCli command.Cli, opts *infoOptions) error {
} }
func prettyPrintInfo(dockerCli command.Cli, info info) error { func prettyPrintInfo(dockerCli command.Cli, info info) error {
fmt.Fprintln(dockerCli.Out(), "Client") fmt.Fprintln(dockerCli.Out(), "Client:")
fmt.Fprintln(dockerCli.Out(), "------")
if info.ClientInfo != nil { if info.ClientInfo != nil {
if err := prettyPrintClientInfo(dockerCli, *info.ClientInfo); err != nil { if err := prettyPrintClientInfo(dockerCli, *info.ClientInfo); err != nil {
info.ClientErrors = append(info.ClientErrors, err.Error()) info.ClientErrors = append(info.ClientErrors, err.Error())
@ -91,8 +90,7 @@ func prettyPrintInfo(dockerCli command.Cli, info info) error {
} }
fmt.Fprintln(dockerCli.Out()) fmt.Fprintln(dockerCli.Out())
fmt.Fprintln(dockerCli.Out(), "Server") fmt.Fprintln(dockerCli.Out(), "Server:")
fmt.Fprintln(dockerCli.Out(), "------")
if info.Info != nil { if info.Info != nil {
for _, err := range prettyPrintServerInfo(dockerCli, *info.Info) { for _, err := range prettyPrintServerInfo(dockerCli, *info.Info) {
info.ServerErrors = append(info.ServerErrors, err.Error()) info.ServerErrors = append(info.ServerErrors, err.Error())
@ -109,7 +107,7 @@ func prettyPrintInfo(dockerCli command.Cli, info info) error {
} }
func prettyPrintClientInfo(dockerCli command.Cli, info clientInfo) error { func prettyPrintClientInfo(dockerCli command.Cli, info clientInfo) error {
fmt.Fprintln(dockerCli.Out(), "Debug Mode:", info.Debug) fmt.Fprintln(dockerCli.Out(), " Debug Mode:", info.Debug)
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"))
@ -122,50 +120,50 @@ func prettyPrintClientInfo(dockerCli command.Cli, info clientInfo) error {
func prettyPrintServerInfo(dockerCli command.Cli, info types.Info) []error { func prettyPrintServerInfo(dockerCli command.Cli, info types.Info) []error {
var errs []error var errs []error
fmt.Fprintln(dockerCli.Out(), "Containers:", info.Containers) fmt.Fprintln(dockerCli.Out(), " Containers:", info.Containers)
fmt.Fprintln(dockerCli.Out(), " Running:", info.ContainersRunning) fmt.Fprintln(dockerCli.Out(), " Running:", info.ContainersRunning)
fmt.Fprintln(dockerCli.Out(), " Paused:", info.ContainersPaused) fmt.Fprintln(dockerCli.Out(), " Paused:", info.ContainersPaused)
fmt.Fprintln(dockerCli.Out(), " Stopped:", info.ContainersStopped) fmt.Fprintln(dockerCli.Out(), " Stopped:", info.ContainersStopped)
fmt.Fprintln(dockerCli.Out(), "Images:", info.Images) fmt.Fprintln(dockerCli.Out(), " Images:", info.Images)
fprintlnNonEmpty(dockerCli.Out(), "Server Version:", info.ServerVersion) fprintlnNonEmpty(dockerCli.Out(), " Server Version:", info.ServerVersion)
fprintlnNonEmpty(dockerCli.Out(), "Storage Driver:", info.Driver) 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
@ -175,7 +173,7 @@ func prettyPrintServerInfo(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)
} }
@ -185,16 +183,16 @@ func prettyPrintServerInfo(dockerCli command.Cli, info types.Info) []error {
if kvs, err := types.DecodeSecurityOptions(info.SecurityOptions); err != nil { if kvs, err := types.DecodeSecurityOptions(info.SecurityOptions); err != nil {
errs = append(errs, err) errs = append(errs, err)
} else { } 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)
} }
} }
} }
@ -204,74 +202,74 @@ func prettyPrintServerInfo(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:", info.Debug) fmt.Fprintln(dockerCli.Out(), " Debug Mode:", 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")
@ -284,67 +282,67 @@ 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)
} }
} }
} }

View File

@ -1,54 +1,52 @@
Client Client:
------ Debug Mode: false
Debug Mode: false
Server Server:
------ Containers: 0
Containers: 0 Running: 0
Running: 0 Paused: 0
Paused: 0 Stopped: 0
Stopped: 0 Images: 0
Images: 0 Server Version: 17.06.1-ce
Server Version: 17.06.1-ce Storage Driver: aufs
Storage Driver: aufs Root Dir: /var/lib/docker/aufs
Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs
Backing Filesystem: extfs Dirs: 0
Dirs: 0 Dirperm1 Supported: true
Dirperm1 Supported: true Logging Driver: json-file
Logging Driver: json-file Cgroup Driver: cgroupfs
Cgroup Driver: cgroupfs Plugins:
Plugins: Volume: local
Volume: local Network: bridge host macvlan null overlay
Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive
Swarm: inactive Runtimes: runc
Runtimes: runc Default Runtime: runc
Default Runtime: runc Init Binary: docker-init
Init Binary: docker-init containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170 runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2 init version: 949e6fa
init version: 949e6fa Kernel Version: 4.4.0-87-generic
Kernel Version: 4.4.0-87-generic Operating System: Ubuntu 16.04.3 LTS
Operating System: Ubuntu 16.04.3 LTS OSType: linux
OSType: linux Architecture: x86_64
Architecture: x86_64 CPUs: 2
CPUs: 2 Total Memory: 1.953GiB
Total Memory: 1.953GiB Name: system-sample
Name: system-sample ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX Docker Root Dir: /var/lib/docker
Docker Root Dir: /var/lib/docker Debug Mode: true
Debug Mode: true File Descriptors: 33
File Descriptors: 33 Goroutines: 135
Goroutines: 135 System Time: 2017-08-24T17:44:34.077811894Z
System Time: 2017-08-24T17:44:34.077811894Z EventsListeners: 0
EventsListeners: 0 Registry: https://index.docker.io/v1/
Registry: https://index.docker.io/v1/ Labels:
Labels: provider=digitalocean
provider=digitalocean Experimental: false
Experimental: false Insecure Registries:
Insecure Registries: 127.0.0.0/8
127.0.0.0/8 Live Restore Enabled: false
Live Restore Enabled: false
ERROR: an error happened ERROR: an error happened
ERROR: invalid empty security option ERROR: invalid empty security option

View File

@ -1,7 +1,5 @@
Client Client:
------
ERROR: a client error occurred ERROR: a client error occurred
Server Server:
------
ERROR: a server error occurred ERROR: a server error occurred

View File

@ -1,56 +1,54 @@
Client Client:
------ Debug Mode: true
Debug Mode: true
Server Server:
------ Containers: 0
Containers: 0 Running: 0
Running: 0 Paused: 0
Paused: 0 Stopped: 0
Stopped: 0 Images: 0
Images: 0 Server Version: 17.06.1-ce
Server Version: 17.06.1-ce Storage Driver: aufs
Storage Driver: aufs Root Dir: /var/lib/docker/aufs
Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs
Backing Filesystem: extfs Dirs: 0
Dirs: 0 Dirperm1 Supported: true
Dirperm1 Supported: true Logging Driver: json-file
Logging Driver: json-file Cgroup Driver: cgroupfs
Cgroup Driver: cgroupfs Plugins:
Plugins: Volume: local
Volume: local Network: bridge host macvlan null overlay
Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive
Swarm: inactive Runtimes: runc
Runtimes: runc Default Runtime: runc
Default Runtime: runc Init Binary: docker-init
Init Binary: docker-init containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170 runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2 init version: 949e6fa
init version: 949e6fa Security Options:
Security Options: apparmor
apparmor seccomp
seccomp Profile: default
Profile: default Kernel Version: 4.4.0-87-generic
Kernel Version: 4.4.0-87-generic Operating System: Ubuntu 16.04.3 LTS
Operating System: Ubuntu 16.04.3 LTS OSType: linux
OSType: linux Architecture: x86_64
Architecture: x86_64 CPUs: 2
CPUs: 2 Total Memory: 1.953GiB
Total Memory: 1.953GiB Name: system-sample
Name: system-sample ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX Docker Root Dir: /var/lib/docker
Docker Root Dir: /var/lib/docker Debug Mode: true
Debug Mode: true File Descriptors: 33
File Descriptors: 33 Goroutines: 135
Goroutines: 135 System Time: 2017-08-24T17:44:34.077811894Z
System Time: 2017-08-24T17:44:34.077811894Z EventsListeners: 0
EventsListeners: 0 Registry: https://index.docker.io/v1/
Registry: https://index.docker.io/v1/ Labels:
Labels: provider=digitalocean
provider=digitalocean Experimental: false
Experimental: false Insecure Registries:
Insecure Registries: 127.0.0.0/8
127.0.0.0/8 Live Restore Enabled: false
Live Restore Enabled: false

View File

@ -1,78 +1,76 @@
Client Client:
------ Debug Mode: false
Debug Mode: false
Server Server:
------ Containers: 0
Containers: 0 Running: 0
Running: 0 Paused: 0
Paused: 0 Stopped: 0
Stopped: 0 Images: 0
Images: 0 Server Version: 17.06.1-ce
Server Version: 17.06.1-ce Storage Driver: aufs
Storage Driver: aufs Root Dir: /var/lib/docker/aufs
Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs
Backing Filesystem: extfs Dirs: 0
Dirs: 0 Dirperm1 Supported: true
Dirperm1 Supported: true Logging Driver: json-file
Logging Driver: json-file Cgroup Driver: cgroupfs
Cgroup Driver: cgroupfs Plugins:
Plugins: Volume: local
Volume: local Network: bridge host macvlan null overlay
Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: active
Swarm: active NodeID: qo2dfdig9mmxqkawulggepdih
NodeID: qo2dfdig9mmxqkawulggepdih Is Manager: true
Is Manager: true ClusterID: 9vs5ygs0gguyyec4iqf2314c0
ClusterID: 9vs5ygs0gguyyec4iqf2314c0 Managers: 1
Managers: 1 Nodes: 1
Nodes: 1 Orchestration:
Orchestration: Task History Retention Limit: 5
Task History Retention Limit: 5 Raft:
Raft: Snapshot Interval: 10000
Snapshot Interval: 10000 Number of Old Snapshots to Retain: 0
Number of Old Snapshots to Retain: 0 Heartbeat Tick: 1
Heartbeat Tick: 1 Election Tick: 3
Election Tick: 3 Dispatcher:
Dispatcher: Heartbeat Period: 5 seconds
Heartbeat Period: 5 seconds CA Configuration:
CA Configuration: Expiry Duration: 3 months
Expiry Duration: 3 months Force Rotate: 0
Force Rotate: 0 Autolock Managers: true
Autolock Managers: true Root Rotation In Progress: false
Root Rotation In Progress: false Node Address: 165.227.107.89
Node Address: 165.227.107.89 Manager Addresses:
Manager Addresses: 165.227.107.89:2377
165.227.107.89:2377 Runtimes: runc
Runtimes: runc Default Runtime: runc
Default Runtime: runc Init Binary: docker-init
Init Binary: docker-init containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170 runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2 init version: 949e6fa
init version: 949e6fa Security Options:
Security Options: apparmor
apparmor seccomp
seccomp Profile: default
Profile: default Kernel Version: 4.4.0-87-generic
Kernel Version: 4.4.0-87-generic Operating System: Ubuntu 16.04.3 LTS
Operating System: Ubuntu 16.04.3 LTS OSType: linux
OSType: linux Architecture: x86_64
Architecture: x86_64 CPUs: 2
CPUs: 2 Total Memory: 1.953GiB
Total Memory: 1.953GiB Name: system-sample
Name: system-sample ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX
ID: EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX Docker Root Dir: /var/lib/docker
Docker Root Dir: /var/lib/docker Debug Mode: true
Debug Mode: true File Descriptors: 33
File Descriptors: 33 Goroutines: 135
Goroutines: 135 System Time: 2017-08-24T17:44:34.077811894Z
System Time: 2017-08-24T17:44:34.077811894Z EventsListeners: 0
EventsListeners: 0 Registry: https://index.docker.io/v1/
Registry: https://index.docker.io/v1/ Labels:
Labels: provider=digitalocean
provider=digitalocean Experimental: false
Experimental: false Insecure Registries:
Insecure Registries: 127.0.0.0/8
127.0.0.0/8 Live Restore Enabled: false
Live Restore Enabled: false

View File

@ -55,60 +55,58 @@ information about the `devicemapper` storage driver is shown:
```bash ```bash
$ docker info $ docker info
Client Client:
------ Debug Mode: false
Debug Mode: false
Server Server:
------ Containers: 14
Containers: 14 Running: 3
Running: 3 Paused: 1
Paused: 1 Stopped: 10
Stopped: 10 Images: 52
Images: 52 Server Version: 1.10.3
Server Version: 1.10.3 Storage Driver: devicemapper
Storage Driver: devicemapper Pool Name: docker-202:2-25583803-pool
Pool Name: docker-202:2-25583803-pool Pool Blocksize: 65.54 kB
Pool Blocksize: 65.54 kB Base Device Size: 10.74 GB
Base Device Size: 10.74 GB Backing Filesystem: xfs
Backing Filesystem: xfs Data file: /dev/loop0
Data file: /dev/loop0 Metadata file: /dev/loop1
Metadata file: /dev/loop1 Data Space Used: 1.68 GB
Data Space Used: 1.68 GB Data Space Total: 107.4 GB
Data Space Total: 107.4 GB Data Space Available: 7.548 GB
Data Space Available: 7.548 GB Metadata Space Used: 2.322 MB
Metadata Space Used: 2.322 MB Metadata Space Total: 2.147 GB
Metadata Space Total: 2.147 GB Metadata Space Available: 2.145 GB
Metadata Space Available: 2.145 GB Udev Sync Supported: true
Udev Sync Supported: true Deferred Removal Enabled: false
Deferred Removal Enabled: false Deferred Deletion Enabled: false
Deferred Deletion Enabled: false Deferred Deleted Device Count: 0
Deferred Deleted Device Count: 0 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Data loop file: /var/lib/docker/devicemapper/devicemapper/data Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata Library Version: 1.02.107-RHEL7 (2015-12-01)
Library Version: 1.02.107-RHEL7 (2015-12-01) Execution Driver: native-0.2
Execution Driver: native-0.2 Logging Driver: json-file
Logging Driver: json-file Plugins:
Plugins: Volume: local
Volume: local Network: null host bridge
Network: null host bridge Kernel Version: 3.10.0-327.el7.x86_64
Kernel Version: 3.10.0-327.el7.x86_64 Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo) OSType: linux
OSType: linux Architecture: x86_64
Architecture: x86_64 CPUs: 1
CPUs: 1 Total Memory: 991.7 MiB
Total Memory: 991.7 MiB Name: ip-172-30-0-91.ec2.internal
Name: ip-172-30-0-91.ec2.internal ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S
ID: I54V:OLXT:HVMM:TPKO:JPHQ:CQCD:JNLC:O3BZ:4ZVJ:43XJ:PFHZ:6N2S Docker Root Dir: /var/lib/docker
Docker Root Dir: /var/lib/docker Debug Mode: 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
@ -116,87 +114,85 @@ storage driver and a node that is part of a 2-node swarm:
```bash ```bash
$ docker -D info $ docker -D info
Client Client:
------ Debug Mode: true
Debug Mode: true
Server Server:
------ Containers: 14
Containers: 14 Running: 3
Running: 3 Paused: 1
Paused: 1 Stopped: 10
Stopped: 10 Images: 52
Images: 52 Server Version: 1.13.0
Server Version: 1.13.0 Storage Driver: overlay2
Storage Driver: overlay2 Backing Filesystem: extfs
Backing Filesystem: extfs Supports d_type: true
Supports d_type: true Native Overlay Diff: false
Native Overlay Diff: false Logging Driver: json-file
Logging Driver: json-file Cgroup Driver: cgroupfs
Cgroup Driver: cgroupfs Plugins:
Plugins: Volume: local
Volume: local Network: bridge host macvlan null overlay
Network: bridge host macvlan null overlay Swarm: active
Swarm: active NodeID: rdjq45w1op418waxlairloqbm
NodeID: rdjq45w1op418waxlairloqbm Is Manager: true
Is Manager: true ClusterID: te8kdyw33n36fqiz74bfjeixd
ClusterID: te8kdyw33n36fqiz74bfjeixd Managers: 1
Managers: 1 Nodes: 2
Nodes: 2 Orchestration:
Orchestration: Task History Retention Limit: 5
Task History Retention Limit: 5 Raft:
Raft: Snapshot Interval: 10000
Snapshot Interval: 10000 Number of Old Snapshots to Retain: 0
Number of Old Snapshots to Retain: 0 Heartbeat Tick: 1
Heartbeat Tick: 1 Election Tick: 3
Election Tick: 3 Dispatcher:
Dispatcher: Heartbeat Period: 5 seconds
Heartbeat Period: 5 seconds CA Configuration:
CA Configuration: Expiry Duration: 3 months
Expiry Duration: 3 months Root Rotation In Progress: false
Root Rotation In Progress: false Node Address: 172.16.66.128 172.16.66.129
Node Address: 172.16.66.128 172.16.66.129 Manager Addresses:
Manager Addresses: 172.16.66.128:2477
172.16.66.128:2477 Runtimes: runc
Runtimes: runc Default Runtime: runc
Default Runtime: runc Init Binary: docker-init
Init Binary: docker-init containerd version: 8517738ba4b82aff5662c97ca4627e7e4d03b531
containerd version: 8517738ba4b82aff5662c97ca4627e7e4d03b531 runc version: ac031b5bf1cc92239461125f4c1ffb760522bbf2
runc version: ac031b5bf1cc92239461125f4c1ffb760522bbf2 init version: N/A (expected: v0.13.0)
init version: N/A (expected: v0.13.0) Security Options:
Security Options: apparmor
apparmor seccomp
seccomp Profile: default
Profile: default Kernel Version: 4.4.0-31-generic
Kernel Version: 4.4.0-31-generic Operating System: Ubuntu 16.04.1 LTS
Operating System: Ubuntu 16.04.1 LTS OSType: linux
OSType: linux Architecture: x86_64
Architecture: x86_64 CPUs: 2
CPUs: 2 Total Memory: 1.937 GiB
Total Memory: 1.937 GiB Name: ubuntu
Name: ubuntu ID: H52R:7ZR6:EIIA:76JG:ORIY:BVKF:GSFU:HNPG:B5MK:APSC:SZ3Q:N326
ID: H52R:7ZR6:EIIA:76JG:ORIY:BVKF:GSFU:HNPG:B5MK:APSC:SZ3Q:N326 Docker Root Dir: /var/lib/docker
Docker Root Dir: /var/lib/docker Debug Mode: 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.
@ -217,41 +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 Client:
------ Debug Mode: false
Debug Mode: false
Server Server:
------ Containers: 1
Containers: 1 Running: 0
Running: 0 Paused: 0
Paused: 0 Stopped: 1
Stopped: 1 Images: 17
Images: 17 Server Version: 1.13.0
Server Version: 1.13.0 Storage Driver: windowsfilter
Storage Driver: windowsfilter Windows:
Windows: Logging Driver: json-file
Logging Driver: json-file Plugins:
Plugins: Volume: local
Volume: local Network: nat null overlay
Network: nat null overlay Swarm: inactive
Swarm: inactive Default Isolation: process
Default Isolation: process Kernel Version: 10.0 14393 (14393.206.amd64fre.rs1_release.160912-1937)
Kernel Version: 10.0 14393 (14393.206.amd64fre.rs1_release.160912-1937) Operating System: Windows Server 2016 Datacenter
Operating System: Windows Server 2016 Datacenter OSType: windows
OSType: windows Architecture: x86_64
Architecture: x86_64 CPUs: 8
CPUs: 8 Total Memory: 3.999 GiB
Total Memory: 3.999 GiB Name: WIN-V0V70C0LU5P
Name: WIN-V0V70C0LU5P ID: NYMS:B5VK:UMSL:FVDZ:EWB5:FKVK:LPFL:FJMQ:H6FT:BZJ6:L2TD:XH62
ID: NYMS:B5VK:UMSL:FVDZ:EWB5:FKVK:LPFL:FJMQ:H6FT:BZJ6:L2TD:XH62 Docker Root Dir: C:\control
Docker Root Dir: C:\control Debug Mode: 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
``` ```

View File

@ -24,87 +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
Client Client:
------ Debug Mode: true
Debug Mode: true
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
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.
@ -114,59 +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
Client Client:
------ Debug Mode: false
Debug Mode: false
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
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 .}}'