Portal Community

When to Use

Configuration

Connection

FieldTypeDefaultDescription
dockerHoststringunix:///var/run/docker.sockDocker daemon socket path or TCP endpoint.
connectionTypestringunixsocketOne of: unixsocket, tcp, tcptls.
tlsCertPathstringTLS certificate directory. Required for tcptls. optional
timeoutSecondsint30Operation timeout. optional

Operation Fields

This operation requires no additional input fields. Set resource to system and operation to info.

Sample Configuration

{
  "resource": "system",
  "operation": "info",
  "connection": {
    "dockerHost": "unix:///var/run/docker.sock",
    "connectionType": "unixsocket"
  }
}

Validation Errors

Error CodeConditionResolution
CONFIG_ERRORConnection settings missing or malformed.Check dockerHost and connectionType.
AUTH_FAILEDTLS handshake failed.Verify tlsCertPath certificates.
DOCKER_API_ERRORDaemon returned an unexpected error or is unreachable.Check daemon status on the host. Use system/ping for a lightweight connectivity check first.

Output

Success Port

FieldTypeDescription
statusstring"ok" on success.
resourcestring"system"
operationstring"info"
dockerInfo.ContainersintTotal container count (all states).
dockerInfo.ContainersRunningintNumber of running containers.
dockerInfo.ContainersPausedintNumber of paused containers.
dockerInfo.ContainersStoppedintNumber of stopped containers.
dockerInfo.ImagesintTotal number of images on the host.
dockerInfo.MemTotalintTotal host memory in bytes.
dockerInfo.NCPUintNumber of logical CPUs available to the daemon.
dockerInfo.DockerRootDirstringDocker data root directory path.
dockerInfo.ServerVersionstringDocker daemon version string.
dockerInfo.OperatingSystemstringHost operating system name.
dockerInfo.KernelVersionstringHost kernel version string.

Error Port

Fires when the operation fails. Output contains status: "error", errorCode, and errorMessage.

Sample Output

{
  "status": "ok",
  "resource": "system",
  "operation": "info",
  "dockerInfo": {
    "Containers": 12,
    "ContainersRunning": 8,
    "ContainersPaused": 0,
    "ContainersStopped": 4,
    "Images": 23,
    "MemTotal": 17179869184,
    "NCPU": 8,
    "DockerRootDir": "/var/lib/docker",
    "ServerVersion": "26.1.3",
    "OperatingSystem": "Ubuntu 24.04.1 LTS",
    "KernelVersion": "6.8.0-40-generic"
  }
}

Expression Reference

ExpressionReturns
{{ $output.dockerInfo.ContainersRunning }}Count of running containers — use in dashboard.
{{ $output.dockerInfo.MemTotal }}Total host memory in bytes.
{{ ($output.dockerInfo.MemTotal / 1073741824).toFixed(1) }}Total memory in GB.
{{ $output.dockerInfo.NCPU }}Logical CPU count — use for capacity planning assertions.
{{ $output.dockerInfo.ServerVersion }}Docker daemon version — use in compliance audit records.

Node Policies & GuardRails

PolicyEnforcement
Never expose Docker daemon TCP without TLSUse tcptls for remote connections. Plain tcp is blocked in production GuardRail profiles.
Store TLS certificates in Credentials ManagerReference tlsCertPath via {{ $credentials.dockerTlsCertPath }}.
Use system/ping before system/info in health-check workflowssystem/ping is a lightweight connectivity test. Reserve system/info for when full daemon metadata is needed.
Never interpolate user input into connection fieldsThe dockerHost value must come from credentials or fixed configuration.
Always handle the error portA daemon-down scenario will route to the error port — wire it to an alerting or failover node.
Restrict container/exec to approved commandsArbitrary exec access is root-equivalent. GuardRail exec policies restrict allowed command prefixes.

Examples

Example 1 — Pre-Deploy Capacity Gate

Before deploying a resource-intensive container (e.g., ML inference server requiring 8 GB RAM), check that the host has sufficient total memory and available container headroom.

// After system/info:
// Condition: enough memory?
{{ $output.dockerInfo.MemTotal >= 8589934592 }} // 8 GB in bytes

// Condition: not overloaded?
{{ $output.dockerInfo.ContainersRunning < 50 }}

Example 2 — Host Inventory Report

Call system/info on each Docker host in a scheduled workflow and write results to an asset database.

{
  "hostEndpoint": "{{ $loopItem.endpoint }}",
  "os": "{{ $output.dockerInfo.OperatingSystem }}",
  "kernel": "{{ $output.dockerInfo.KernelVersion }}",
  "dockerVersion": "{{ $output.dockerInfo.ServerVersion }}",
  "cpus": "{{ $output.dockerInfo.NCPU }}",
  "memoryGB": "{{ ($output.dockerInfo.MemTotal / 1073741824).toFixed(1) }}"
}

Example 3 — Configuration Drift Detection

Compare the host's DockerRootDir and ServerVersion against the expected values stored in a configuration baseline. Alert if they differ.

// Drift condition:
{{ $output.dockerInfo.DockerRootDir !== '/var/lib/docker' ||
   $output.dockerInfo.ServerVersion !== $vars.expectedDockerVersion }}
// If true → send drift alert to ops channel