Portal Community

When to Use

  container/start returns immediately after instructing the daemon to start the container. It does not wait for the application inside to become healthy. Use container/inspect in a polling loop or a Delay node followed by container/inspect to verify the container reached State.Running = true.

Configuration

Connection Fields

FieldTypeDefaultDescription
dockerHoststringunix:///var/run/docker.sockDocker socket path or TCP endpoint
connectionTypestringunixsocketunixsocket | tcp | tcptls
tlsCertPathstringTLS certificate directory. Required for tcptls. optional
timeoutSecondsint30Operation timeout in seconds. optional

Operation Fields

FieldTypeRequiredDescription
resourcestringrequiredMust be container
operationstringrequiredMust be start
ContainerIdstringrequiredContainer ID (full or short) or container name

Sample Configuration

{
  "resource": "container",
  "operation": "start",
  "ContainerId": "api-service-blue",
  "connection": {
    "dockerHost": "unix:///var/run/docker.sock",
    "connectionType": "unixsocket"
  }
}

Validation Errors

Error CodeTriggerResolution
MISSING_INPUTContainerId is empty or not providedProvide the container name or ID. Use the output of container/create upstream: {{ $output.containerId }}
NOT_FOUNDContainer does not existRun container/create first or verify the container name is correct.
CONFLICTContainer is already runningCheck container state with container/inspect before calling start. Handle the CONFLICT error as a non-fatal condition if the workflow is idempotent.
DOCKER_API_ERRORDocker daemon error (e.g. port already in use on host)Check the error message. A port conflict requires stopping the other container using that port first.

Output

Success Port

FieldTypeDescription
containerIdstringID of the container that was started
statusstringsuccess
resourcestringcontainer
operationstringstart

Error Port

On failure, the error port receives errorCode, message, resource, and operation. The CONFLICT error (container already running) is typically handled as an acceptable condition in idempotent deploy workflows.

Sample Output

{
  "containerId": "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890",
  "status": "success",
  "resource": "container",
  "operation": "start"
}

Expression Reference

ExpressionReturns
{{ $output.containerId }}Full ID of the started container — pass to subsequent inspect or exec nodes
{{ $output.status }}success when start completed

Node Policies & GuardRails

PolicyDetail
Verify running state after startAlways follow container/start with a container/inspect check to confirm State.Running = true before routing traffic or removing old containers.
No remote TCP without TLSUse tcptls for remote Docker hosts. Plain tcp is blocked in production profiles.
Handle CONFLICT gracefullyIn idempotent pipelines, a CONFLICT error on start means the container is already running — route the error branch to a container/inspect to confirm and continue.
Always wire the error portContainer start can fail due to port conflicts or resource exhaustion. An unhandled error port causes silent pipeline failures.
Use named containersPass the container name (not just the raw ID) to ContainerId for readability in workflow audit logs.

Examples

Example 1: Create-then-start deploy pattern

The canonical two-step deployment: create a container with configuration, then start it, then verify health.

// Node 1: container/create
{ "Image": "myapp:{{ $trigger.version }}", "Name": "api-{{ $trigger.deployId }}" }

// Node 2: container/start — uses ID from create output
{ "ContainerId": "{{ $nodes.createContainer.output.containerId }}" }

// Node 3: container/inspect — verify it's running
{ "ContainerId": "{{ $nodes.createContainer.output.containerId }}" }
// If Condition: $output.container.State.Running === true → proceed
// Else: trigger rollback

Example 2: Restart stopped service containers after reboot

Use container/list to find exited service containers, then loop through and start each one.

// Loop node iterates over exited containers from list output
// Each iteration:
{
  "resource": "container",
  "operation": "start",
  "ContainerId": "{{ $loopItem.Names[0] }}"
}

Example 3: Blue-green start and verify

// Start blue container
{ "resource": "container", "operation": "start", "ContainerId": "api-service-blue" }

// Delay 3 seconds for process startup
// Then inspect to confirm running:
{ "resource": "container", "operation": "inspect", "ContainerId": "api-service-blue" }
// If State.Running true → exec health check → stop green container