docker/cli · warning
errors pretty printing info
Error message
errors pretty printing info
What it means
Returned by prettyPrintInfo (system info.go:211-213) as an aggregate sentinel AFTER it has already printed each individual client/server error to stderr. It is raised whenever info.ClientErrors or info.ServerErrors is non-empty, meaning one or more subsystems failed to report their info. The real diagnostic detail is in the per-line 'ERROR:' messages printed just before this aggregate is returned.
Solutions
- Read the individual 'ERROR:' lines printed above this message - they name the actual failing component.
- Fix or remove the offending CLI plugin (docker plugin ls / docker plugin rm).
- For server-side errors, inspect the dockerd logs (journalctl -u docker) for the underlying cause.
- If Swarm-related, verify node status with 'docker node ls' and restore quorum.
- Re-run 'docker info' after the fix to confirm a clean (zero-error) result.
Defensive patterns
Strategy: try-catch
Try / catch
// When scripting 'docker info', expect a non-zero exit when any subsystem errored.
out, err := exec.Command("docker", "info", "--format", "{{json .}}").Output()
if err != nil {
// The aggregate 'errors pretty printing info' is expected if subsystems failed;
// parse the JSON (if produced) for ServerErrors/ClientErrors rather than failing hard.
if len(out) > 0 {
var info map[string]any
_ = json.Unmarshal(out, &info)
// inspect info["ServerErrors"] / info["ClientErrors"]
}
// treat as soft warning, not fatal, unless critical fields are missing
} Prevention
- Parse 'docker info --format {{json .}}' and inspect ServerErrors/ClientErrors explicitly instead of relying solely on exit code.
- Keep CLI plugins healthy: remove broken ones with 'docker plugin rm'.
- In CI, tolerate this aggregate error if the specific subsystem you need reports OK.
- Watch daemon logs for the root cause behind each per-line ERROR.
When it happens
Trigger: Running 'docker info' when the daemon returned partial results: e.g. a plugin failed to load, the builder/registry responded with an error, Swarm could not be reached, or a CLI plugin errored. Each entry in info.ServerErrors/info.ClientErrors is printed, then the function returns this summary error so the CLI exits non-zero.
Common situations: Broken or half-installed CLI plugins (info.go:225-231 marks invalid plugins). Daemon with disabled or misconfigured subsystems (logging, builder, registry mirrors). Swarm manager node that lost quorum. Client/plugin version skew where a plugin crashes on load.
Related errors
- docker: unknown command: docker
- failed to unmarshal hook response
- unable to determine basename of plugin candidate
- plugin candidate
- plugin candidate : does not have prefix
AI-assisted analysis of docker/cli@4f84911bfe (2026-08-07).
Data as JSON: /api/errors/1b04e6a9a1cc9fe7.
Report an issue: GitHub.
Appendix: source
Thrown at cli/command/system/info.go:212
}
if info.ClientInfo != nil {
prettyPrintClientInfo(streams, *info.ClientInfo)
}
for _, err := range info.ClientErrors {
fprintln(streams.Err(), "ERROR:", err)
}
fprintln(streams.Out())
fprintln(streams.Out(), "Server:")
if info.Info != nil {
prettyPrintServerInfo(streams, &info)
}
for _, err := range info.ServerErrors {
fprintln(streams.Err(), "ERROR:", err)
}
if len(info.ServerErrors) > 0 || len(info.ClientErrors) > 0 {
return errors.New("errors pretty printing info")
}
return nil
}
func prettyPrintClientInfo(streams command.Streams, info clientInfo) {
fprintlnNonEmpty(streams.Out(), " Version: ", info.Version)
fprintln(streams.Out(), " Context: ", info.Context)
fprintln(streams.Out(), " Debug Mode:", info.Debug)
if len(info.Plugins) > 0 {
fprintln(streams.Out(), " Plugins:")
for _, p := range info.Plugins {
if p.Err == nil {
fprintf(streams.Out(), " %s: %s (%s)\n", p.Name, p.ShortDescription, p.Vendor)
fprintlnNonEmpty(streams.Out(), " Version: ", p.Version)
fprintlnNonEmpty(streams.Out(), " Path: ", p.Path)
} else {
info.Warnings = append(info.Warnings, fmt.Sprintf("WARNING: Plugin %q is not valid: %s", p.Path, p.Err))View on GitHub (pinned to 4f84911bfe)