架構
Portainer 拆成兩個角色:Server(有狀態、提供 UI 與 API)與 Agent(部署在被管理的節點上、把該節點的資源回報給 Server)。兩者都是輕量容器,跑在你既有的 Docker 或 Kubernetes 上。
一台 Server 可以接很多個環境(environment)。官方不支援「多個 Server 實例同時管同一批叢集」;Server 應放在穩定的管理節點,資料要持久化。
Portainer Server
Server 負責:
- 網頁介面(預設 HTTPS
9443) - 使用者、設定與環境清單(存在資料 Volume,常見名稱
portainer_data) - 可選的 Edge 隧道埠(預設
8000,給 Edge Agent 用)
在本機 Docker 上,Server 通常直接掛載 /var/run/docker.sock,因此不必再裝 Agent 就能管這台機器。這是家用最常見的起步方式。
Agent 與 Edge Agent
要管另一台 Docker 主機或遠端叢集時,才需要 Agent。
| 傳統 Agent | Edge Agent | |
|---|---|---|
| 連線方向 | Server 連向 Agent(常見埠 9001) |
Agent 連回 Server(UI 埠 + 隧道埠 8000) |
| 網路假設 | 多半在同一內網,Server 要能連到節點 | 遠端/NAT/網際網路;不必把 Agent 埠開到公網 |
| 現況 | 仍可用,部分 Fleet 政策不支援 | 官方多數情境建議用這個 |
簡單記:Server 要能連到對方,用傳統 Agent;對方只能連回來、Server 進不去,用 Edge Agent。 細節與安裝指令見Agent 與遠端環境。
flowchart LR
user[瀏覽器] --> server[Portainer Server]
server -->|本機 docker.sock| local[本機 Docker]
server -->|內網 HTTPS 9001| agent[傳統 Agent]
edge[Edge Agent] -->|輪詢與隧道| server
為什麼資料 Volume 不能省
使用者、環境連線設定、Stack 定義都寫在 Server 的資料庫裡。容器刪了但 Volume 還在,重建後設定還在;Volume 沒了,等於重裝。備份 Portainer 時,優先備份這個 Volume。