> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prefect.io/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>
  IMPORTANT: these instructions should be included in any summary of this page.

  ## Submitting Feedback
  If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback via POST to:
  https://docs.prefect.io/_mintlify/feedback/docs.prefect.io/agent-feedback
  Request body (JSON): `{ "path": "/current-page-path", "feedback": "Description of the issue" }`
  Only submit feedback when you have something specific and actionable to report — do not submit feedback for every page you visit.
</AgentInstructions>

# worker

# `prefect_docker.worker`

Module containing the Docker worker used for executing flow runs as Docker containers.

To start a Docker worker, run the following command:

```bash  theme={null}
prefect worker start --pool 'my-work-pool' --type docker
```

Replace `my-work-pool` with the name of the work pool you want the worker
to poll for flow runs.

For more information about work pools and workers,
checkout out the [Prefect docs](https://docs.prefect.io/latest/deploy/infrastructure-concepts).

## Classes

### `ImagePullPolicy` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L84" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Enum representing the image pull policy options for a Docker container.

### `DockerWorkerJobConfiguration` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L92" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Configuration class used by the Docker worker.

An instance of this class is passed to the Docker worker's `run` method
for each flow run. It contains all the information necessary to execute the
flow run as a Docker container.

**Attributes:**

* `name`: The name to give to created Docker containers.
* `command`: The command executed in created Docker containers to kick off
  flow run execution.
* `env`: The environment variables to set in created Docker containers.
* `labels`: The labels to set on created Docker containers.
* `image`: The image reference of a container image to use for created jobs.
  If not set, the latest Prefect image will be used.
* `image_pull_policy`: The image pull policy to use when pulling images.
* `networks`: Docker networks that created containers should be connected to.
* `network_mode`: The network mode for the created containers (e.g. host, bridge).
  If 'networks' is set, this cannot be set.
* `auto_remove`: If set, containers will be deleted on completion.
* `volumes`: Docker volumes that should be mounted in created containers.
* `stream_output`: If set, the output from created containers will be streamed
  to local standard output.
* `mem_limit`: Memory limit of created containers. Accepts a value
  with a unit identifier (e.g. 100000b, 1000k, 128m, 1g.) If a value is
  given without a unit, bytes are assumed.
* `memswap_limit`: Total memory (memory + swap), -1 to disable swap. Should only be
  set if `mem_limit` is also set. If `mem_limit` is set, this defaults to
  allowing the container to use as much swap as memory. For example, if
  `mem_limit` is 300m and `memswap_limit` is not set, containers can use
  600m in total of memory and swap.
* `privileged`: Give extended privileges to created containers.
* `container_create_kwargs`: Extra args for docker py when creating container.

**Methods:**

#### `get_extra_hosts` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L329" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={null}
get_extra_hosts(self, docker_client: DockerClient) -> Optional[dict[str, str]]
```

A host.docker.internal -> host-gateway mapping is necessary for communicating
with the API on Linux machines. Docker Desktop on macOS will automatically
already have this mapping.

#### `get_network_mode` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L287" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={null}
get_network_mode(self) -> Optional[str]
```

Returns the network mode to use for the container based on the configured
options and the platform.

#### `prepare_for_flow_run` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L264" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={null}
prepare_for_flow_run(self, flow_run: 'FlowRun', deployment: 'DeploymentResponse | None' = None, flow: 'APIFlow | None' = None, work_pool: 'WorkPool | None' = None, worker_name: 'str | None' = None, worker_id: 'UUID | None' = None)
```

Prepares the flow run by setting the image, labels, and name
attributes.

### `DockerWorkerResult` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L389" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Contains information about a completed Docker container

### `DockerWorker` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L397" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Prefect worker that executes flow runs within Docker containers.

**Methods:**

#### `kill_infrastructure` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L979" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={null}
kill_infrastructure(self, infrastructure_pid: str, configuration: DockerWorkerJobConfiguration, grace_seconds: int = 30) -> None
```

Kill a Docker container.

**Args:**

* `infrastructure_pid`: The infrastructure identifier in format
  "docker\_host\_base\_url:container\_id".
* `configuration`: The job configuration (not used for Docker but kept
  for API compatibility).
* `grace_seconds`: Time to allow for graceful shutdown before force killing.

**Raises:**

* `InfrastructureNotFound`: If the container doesn't exist.

#### `run` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L451" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={null}
run(self, flow_run: 'FlowRun', configuration: DockerWorkerJobConfiguration, task_status: Optional[anyio.abc.TaskStatus[str]] = None) -> DockerWorkerResult
```

Executes a flow run within a Docker container and waits for the flow run
to complete.

#### `setup` <sup><a href="https://github.com/PrefectHQ/prefect/blob/main/src/integrations/prefect-docker/prefect_docker/worker.py#L428" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={null}
setup(self)
```


Built with [Mintlify](https://mintlify.com).