본문으로 건너뛰기

ContainerClientMixin

Mixin providing container management endpoints for Docker container lifecycle operations.

Overview

The ContainerClientMixin provides methods for managing Docker containers on agents. It supports creating, listing, and removing containers that run plugin releases.

Methods

list_docker_containers

List all Docker containers on the host.

from synapse_sdk.clients.agent import AgentClient

client = AgentClient(base_url="https://agent.example.com")

containers = client.list_docker_containers()
for container in containers:
print(f"Container: {container['id']} - {container['status']}")

Returns: list[dict] - List of container information dictionaries.


get_docker_container

Get a specific Docker container by ID.

container = client.get_docker_container("abc123def456")
print(f"Status: {container['status']}")

Parameters:

ParameterTypeDescription
container_idstrDocker container ID

Returns: dict - Container details.


create_docker_container

Build and run a Docker container for a plugin release.

from synapse_sdk.clients.agent import AgentClient

client = AgentClient(base_url="https://agent.example.com")

container = client.create_docker_container(
plugin_release="[email protected]",
params={"input": "data"},
envs={"DEBUG": "true"},
metadata={"created_by": "automation"},
labels=["production", "ml-model"]
)

print(f"Container ID: {container['id']}")

Parameters:

ParameterTypeRequiredDescription
plugin_releasestrYesPlugin identifier (e.g., plugin_code@version)
paramsdictNoParameters forwarded to the plugin
envsdictNoEnvironment variables for the container
metadatadictNoAdditional metadata stored with the record
labelslist[str]NoContainer labels for display/filtering

Returns: dict - Created container information.


delete_docker_container

Stop and remove a Docker container.

client.delete_docker_container("abc123def456")

Parameters:

ParameterTypeDescription
container_idstrDocker container ID

Database Container Records

In addition to Docker operations, this mixin provides methods for managing container records in the database.

list_containers

List tracked containers from the database.

containers, total = client.list_containers(
params={"status": "running"},
list_all=True
)

Parameters:

ParameterTypeDescription
paramsdictFilter parameters
list_allboolFetch all pages automatically

Returns: dict or tuple[list, int] - Container list (with total count if list_all=True).


get_container

Get a tracked container by database ID.

container = client.get_container(42)

Parameters:

ParameterTypeDescription
container_idintDatabase container ID

Returns: dict - Container details.


update_container

Update a tracked container's status.

updated = client.update_container(42, status="stopped")

Parameters:

ParameterTypeDescription
container_idintDatabase container ID
statusstrNew status value

Returns: dict - Updated container details.


delete_container

Delete a tracked container (also stops the Docker container).

client.delete_container(42)

Parameters:

ParameterTypeDescription
container_idintDatabase container ID

Usage with AgentClient

The ContainerClientMixin is used by AgentClient:

from synapse_sdk.clients.agent import AgentClient

client = AgentClient(
base_url="https://agent.example.com",
access_token="your-token"
)

# Create a container for a plugin
container = client.create_docker_container(
plugin_release="[email protected]",
params={"format": "pdf"},
envs={"WORKERS": "4"}
)

# Monitor the container
status = client.get_docker_container(container["docker_id"])
print(f"Running: {status['running']}")

# Clean up
client.delete_docker_container(container["docker_id"])

See Also