# Worker node

> 在獨立且經過安全強化的伺服器上執行 agent 容器，與主要 PentAGI 主機分離。

在生產環境中，請勿讓不受信任的 [tool](https://pentagi.com/zh-tw/docs/glossary/#tool) 執行於運行 PentAGI 的機器上。[Worker node](https://pentagi.com/zh-tw/docs/glossary/#worker-node) 會將 [agents](https://pentagi.com/zh-tw/docs/glossary/#agent) 的容器託管在受 TLS 保護的 Docker 端點之後，因此 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-tw/docs/deployment/worker-node/#why-a-worker-node)

* **隔離性。** Tool 容器運行於專用硬體上，並擁有獨立的網路邊界。
* **受控的 Docker 存取權限。** 需要使用 Docker 的 agents 會透過授權原則與強化過的 Docker-in-Docker 守護程式通訊，而非直接連接主機的守護程式。
* **帶外測試。** Worker node 上的專用連接埠範圍可支援 OOB 回調。

## [連線模式](https://pentagi.com/zh-tw/docs/deployment/worker-node/#connection-modes)

* **標準（推薦）** — PentAGI 透過 TLS 連線至 worker node 的主機 Docker 以建立工作容器；工作容器則透過其 TLS 端點存取 Docker-in-Docker。請將 `DOCKER_INSIDE=true` 與 `DOCKER_INSIDE_HOST`、`DOCKER_INSIDE_TLS_VERIFY` 和 `DOCKER_INSIDE_CERT_PATH` 一起設定，並將 `DOCKER_SOCKET` 留空：否則 `.env` 範本的 `/var/run/docker.sock` 也會將 worker node 的主機 Docker socket 掛載至每個 [sandbox](https://pentagi.com/zh-tw/docs/glossary/#sandbox)。若沒有 `DOCKER_INSIDE_HOST`，agent 將無法存取 Docker。
* **直接** — PentAGI 直接與 Docker-in-Docker 通訊；此時主機的綁定掛載會被原則拒絕，因此必須停用 agents 的 Docker 存取權限。

## [設定方式](https://pentagi.com/zh-tw/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)。