Output Ports
All 31 operations share the same two output ports.
| Port | Trigger Condition | Description |
| success |
Docker API returned 2xx |
The operation completed successfully. Output data is available in the node's output object and can be referenced in downstream expressions. |
| error |
Docker API error or connection failure |
The operation failed. The error object includes errorCode, message, and httpStatus. Route to an alert or retry node as needed. |
Common Error Codes
| Error Code | Description | Typical Operations |
| ContainerNotFound |
The specified container ID or name does not exist on the connected Docker daemon. Verify the ID is correct and the container has not been removed. |
container/* |
| ImageNotFound |
The specified image ID or name is not present in local image storage. Pull the image first using image/pull before referencing it in container/create. |
image/*, container/create |
| DaemonUnreachable |
BizFirst could not establish a connection to the Docker daemon at the configured DockerHost. Check the socket path, TCP address, TLS certificates, and firewall rules. |
All operations |
| PermissionDenied |
The BizFirst workflow runner process does not have permission to access the Docker socket or the TLS credentials are invalid. Ensure the runner user is in the docker group or the socket permissions are set correctly. |
All operations |
| PortAlreadyInUse |
The host port specified in PortBindings is already bound by another process or container. Use a different host port or stop the conflicting container. |
container/create, container/start |
Operation Output Schemas
container/create
| Field | Type | Description |
containerId | string | The full 64-character container ID assigned by the Docker daemon. |
name | string | The container name (prefixed with / by Docker, e.g. /my-app). |
status | string | Initial container status. Will be created immediately after creation before container/start is called. |
warnings | array | Array of warning strings returned by the Docker daemon during creation (e.g. deprecated API usage). Empty array when none. |
{
"containerId": "a3f8c2e1b0d94f5e6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f",
"name": "/my-app-container",
"status": "created",
"warnings": []
}
container/exec
| Field | Type | Description |
exitCode | integer | Exit code returned by the executed command. 0 indicates success. Non-zero indicates an error condition in the executed program. |
stdout | string | Standard output captured from the command execution. Empty string if the command produced no output. |
stderr | string | Standard error captured from the command execution. Contains error messages when exitCode is non-zero. |
{
"exitCode": 0,
"stdout": "Applying 3 migrations...\nMigration 0012_add_user_preferences applied.\nMigration 0013_create_audit_log applied.\nMigration 0014_add_indexes applied.\nDone.",
"stderr": ""
}
container/logs
| Field | Type | Description |
logs | string | Combined stdout and stderr log content as a single string. Lines are separated by newline characters. |
lineCount | integer | Total number of lines returned. Reflects the Tail limit if set, otherwise the total available log lines. |
{
"logs": "2026-05-23T08:00:01Z Starting server on port 8080\n2026-05-23T08:00:02Z Database connection established\n2026-05-23T08:00:15Z Health check passed",
"lineCount": 3
}
container/stats
| Field | Type | Description |
cpuPercent | float | Current CPU usage as a percentage of total available CPU across all cores. |
memoryUsageMB | float | Current memory consumed by the container in megabytes. |
memoryLimitMB | float | Memory limit configured for the container in megabytes. Returns host total memory if no limit is set. |
networkRxMB | float | Total megabytes received over the network interface since container start. |
networkTxMB | float | Total megabytes transmitted over the network interface since container start. |
{
"cpuPercent": 12.4,
"memoryUsageMB": 248.6,
"memoryLimitMB": 1024.0,
"networkRxMB": 14.2,
"networkTxMB": 3.8
}
image/pull
| Field | Type | Description |
imageName | string | The fully qualified image repository name that was pulled (e.g. nginx, myregistry.io/app). |
tag | string | The resolved tag for the pulled image. |
digest | string | The content-addressable SHA256 digest of the pulled image manifest. Use this for deterministic references in subsequent operations. |
size | integer | Uncompressed image size in bytes. |
{
"imageName": "nginx",
"tag": "1.25",
"digest": "sha256:a3e7c2f1b9d84e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9",
"size": 187654321
}
system/info
| Field | Type | Description |
dockerVersion | string | Docker engine version string (e.g. 24.0.7). |
osType | string | Host operating system type as reported by the daemon (e.g. linux). |
architecture | string | CPU architecture of the Docker host (e.g. x86_64, aarch64). |
totalCpus | integer | Number of CPU cores available to the Docker daemon. |
totalMemoryMB | integer | Total system memory available to the Docker daemon in megabytes. |
{
"dockerVersion": "24.0.7",
"osType": "linux",
"architecture": "x86_64",
"totalCpus": 8,
"totalMemoryMB": 16384
}
Accessing Output in Downstream Nodes
Expression reference: Use the node name to reference output fields in downstream expressions. For example, if a container/create node is named createApp and a container/exec node is named runMigration:
{{ nodes.createApp.output.containerId }} — Container ID from create
{{ nodes.runMigration.output.exitCode }} — Exit code from exec
{{ nodes.runMigration.output.stdout }} — Stdout from exec
{{ nodes.pullImage.output.digest }} — Image digest from pull