# Worker node

> 在独立加固的服务器上运行 agent 容器，与 PentAGI 主主机分离。

在生产环境中，请勿在运行 PentAGI 的机器上执行不受信任的 [tool](https://pentagi.com/zh-cn/docs/glossary/#tool)。[Worker node](https://pentagi.com/zh-cn/docs/glossary/#worker-node) 通过受 TLS 保护的 Docker 端点托管 [agents](https://pentagi.com/zh-cn/docs/glossary/#agent) 容器，确保 agent 运行的命令永远不会触及主主机。

```mermaid
graph TB
  accTitle: Main node running PentAGI and a separate worker node running the tool containers
  subgraph Main node
    PA[PentAGI]
  end
  subgraph Worker node
    HD[Host Docker :2376 TLS]
    DIND[Docker-in-Docker :3376 TLS<br/>authorization policy + seccomp]
    W[Worker containers]
    N[Nested containers]
  end
  PA -->|TLS, creates workers| HD
  HD --> W
  W -->|TLS| DIND
  DIND --> N
```

## [为什么需要 worker node](https://pentagi.com/zh-cn/docs/deployment/worker-node/#why-a-worker-node)

* **隔离性。** Tool 容器运行在专用硬件上，并拥有独立的网络边界。
* **受控的 Docker 访问。** 需要使用 Docker 的 agents 通过授权策略与经过加固的 Docker-in-Docker 守护进程通信，而非直接访问宿主机守护进程。
* **带外测试。** Worker node 上的专用端口范围支持 OOB 回调。

## [连接模式](https://pentagi.com/zh-cn/docs/deployment/worker-node/#connection-modes)

* **标准模式（推荐）** — PentAGI 通过 TLS 连接到 worker node 的宿主机 Docker 以创建 worker 容器；worker 则通过其 TLS 端点访问 Docker-in-Docker。将 `DOCKER_INSIDE=true` 与 `DOCKER_INSIDE_HOST`、`DOCKER_INSIDE_TLS_VERIFY` 和 `DOCKER_INSIDE_CERT_PATH` 一起设置，并将 `DOCKER_SOCKET` 留空：`.env` template 的 `/var/run/docker.sock` 还会将 worker node 的宿主机 Docker socket 挂载到每个 [sandbox](https://pentagi.com/zh-cn/docs/glossary/#sandbox) 中。如果没有 `DOCKER_INSIDE_HOST`，agent 将无法获得 Docker 访问权限。
* **直连模式** — PentAGI 直接与 Docker-in-Docker 通信；此时策略将拒绝宿主机绑定挂载，因此必须禁用 agents 的 Docker 访问权限。

## [配置指南](https://pentagi.com/zh-cn/docs/deployment/worker-node/#set-it-up)

完整的操作流程——包括两个守护进程的 TLS 证书、加固的 Docker-in-Docker 配置、策略更新及验证——请参阅代码仓库中的 [worker node 指南](https://github.com/vxcontrol/pentagi/blob/main/examples/guides/worker_node.md)。