Portainer 完整教學 2026:Docker 圖形化管理與自架實戰

Portainer 把 Docker、Swarm、Kubernetes 收進一個網頁介面:CE 免費、zlib 授權、GitHub 3.8 萬星。本文照官方文件實作 docker run 與 Compose 安裝、2.43 後新增的 setup token 首次登入、Stack 部署、Agent 與 Edge Agent 差異、備份還原、反向代理設定,以及 CE 與付費版的界線與六個限制。

  • Dennis
  • 10 分鐘閱讀
Portainer 完整教學 2026:Docker 圖形化管理與自架實戰

Portainer 是用網頁介面管理 Docker、Swarm、Podman 與 Kubernetes 的容器管理工具;社群版 CE 免費、zlib 授權,最新 CE 2.45.3 LTS 於 2026-10-22 發布,GitHub 約 3.87 萬星。安裝只要一行 docker run,但 2.43 版之後多了一道 setup token,本文把流程走完。

為什麼需要 GUI:不是為了偷懶

命令列派的讀者常問「docker ps 不就好了」。實際上痛點不在「看」,而在這幾件事:

痛點純 CLI 的做法Portainer 的做法
臨時看某個容器最近 200 行 logdocker logs --tail 200 <id>,要先查 id容器列表點進去,log 直接串流
改一個 compose 環境變數重啟找 yaml、改檔、docker compose up -dStack 頁直接改、按 Update
同事/家人要重啟某個服務給 SSH 或教指令給他一組帳號,只能操作該環境
磁碟快滿、哪個 volume 最肥docker system df 再看一輪內建 volumes/images 用量檢視
新機器加進來另外記 IP、SSH、憑證加一個 Agent 或 Edge Agent 就連上

對單機使用者,這些只是「方便」;但只要有第二台機器、或有人要接手,GUI 的價值就會立刻出現。

一表看懂 Portainer

項目內容(查證日 2026-10-27)
定位容器管理 UI(Docker、Swarm、Podman、Kubernetes、ACI)
版本CE 2.45.3 LTS(2026-10-22);BE 2.45 系列同步
授權zlib License(GitHub API 查詢)
GitHub約 38,731 stars、2,928 forks、最後推送 2026-10-27
安裝方式單一容器,docker run 或 Docker Compose
預設埠9443(HTTPS UI/API)、8000(Edge tunnel,選用)、9000(舊版 HTTP,選用)
資料存放一個 volume(預設 portainer_data),內含 BoltDB
官方支援架構ARM64、x86_64

CE 與 BE 的分野,看官方 README 最準:CE 是「免費、輕量、給 homelab/學習/個人專案用」;BE 在其上加 RBAC、GitOps、邊緣管理、稽核、SSO 與商業支援。README 甚至白紙黑字寫:CE 不是為生產環境或「停機、安全態勢、資料完整性很重要的場景」設計,也沒有 SLA。

這句話不是行銷話術,而是使用前就該知道的邊界——後面「已知限制」會再談。

運作架構:Server / Agent / Edge Agent

Portainer 由兩個角色組成:Portainer Server(跑 UI 與資料庫)與 Portainer Agent(跑在被管理的機器上,把該機器的 Docker 資源暴露給 Server)。

元件跑在哪需要開的埠適用情境
Portainer Server一台有 Docker 的主機9443(UI/API)、8000(Edge tunnel,僅 Edge 用)全部情境
Portainer Agent(傳統)被管理的節點9001,且 Server 要連得到內網、同一個區網
Portainer Edge Agent被管理的節點不需要開任何埠(反向連回 Server)跨 NAT、分支辦公室、外部機器
Kubernetes 對應埠—30779(UI)、30776(Edge tunnel)、30778(Agent)NodePort 部署

官方文件現在明確標注:傳統 Agent 是 legacy 選項,不支援 edge 功能與 policy management;多數情況建議直接用 Edge Agent。 只要機器不是「Server 主動連得到」的內網環境,就直接選 Edge Agent,省掉一堆 port forwarding。

安裝(一):docker run,官方原文

先建資料 volume:

docker volume create portainer_data

再啟動容器(這段是官方文件原文,建議照抄):

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts

三個細節值得說明:

  • portainer/portainer-ce:lts 是 LTS 標籤,追穩定版就固定用它;想試新功能才換 sts。
  • -v /var/run/docker.sock:/var/run/docker.sock 等於把 Docker 控制權交給 Portainer。這是最大權限,不是普通掛載,任何能登入 Portainer 的人實質上就是該機的 root 等級。
  • -p 8000:8000 只有要用 Edge Agent 才需要;純單機管理可以拿掉。

需要舊版 HTTP 9000 的話,再加 -p 9000:9000。

安裝(二):Docker Compose

官方提供現成 compose 檔:

curl -L https://downloads.portainer.io/ce-sts/portainer-compose.yaml -o portainer-compose.yaml

或自己寫(官方範例):

services:
  portainer:
    container_name: portainer
    image: portainer/portainer-ce:lts
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    ports:
      - 9443:9443
      - 8000:8000  # Remove if you do not intend to use Edge Agents

volumes:
  portainer_data:
    name: portainer_data

networks:
  default:
    name: portainer_network
docker compose -f portainer-compose.yaml up -d
docker ps   # 確認 portainer 容器 Up,9443/8000 有對外

Compose 版的好處是「Portainer 自己也被宣告式管理」,日後升級只要改 image tag 再 up -d。若還不熟 compose 語法,站上另一篇 Docker Compose 完整教學 有從 compose.yaml 到 AI models 的完整說明。

首次登入:2.43 之後多了 setup token

這是 2026 年最多人卡住的一步。從 2.43 / 2.39.4 版起,全新的 Portainer 實例在首次設定時需要一組 setup token,目的是防止剛開機、還沒設密碼的實例被別人搶先接管(對應安全公告 GHSA-x626-fcwx-f5pc)。舊安裝不受影響。

取得方式:token 印在容器 log 裡。

docker logs portainer 2>&1 | grep setup_token
  • Docker Swarm 也在 manager 節點用 docker logs;Podman 用 podman logs;Kubernetes 用 kubectl logs <pod> -n portainer。
  • 開瀏覽器到 https://<主機IP>:9443,貼上 token、設定 admin 密碼即可。
  • token 是一次性的,而且建立管理員必須在 5 分鐘內完成,逾時要重來。
  • 若 token 貼錯或沒帶,設定會被拒絕並提示回 log 找。

三種跳過/自訂的方法(官方文件列在 CLI 選項):

啟動參數效果適用
--setup-token <value>自己指定 token腳本化/自動化部署
--no-setup-token完全關閉 token 要求只在完全可控的內網或 air-gapped 環境用
--admin-password-file啟動時預設 admin 密碼,不產生 token市集/託管安裝、拿不到 log 的環境

實務建議:雲端主機開 9443 對外時,千萬不要用 --no-setup-token。那段幾分鐘的空窗,就是自動掃描機器人最愛的窗口。

放到反向代理後面:三個一定要設的參數

直接暴露 9443 可行,但多數人會想用網域+既有憑證,掛在 Traefik、Nginx 或 Caddy 後面。這時有三個參數必調:

參數用途常見錯誤
--base-url /portainer跑在子路徑(https://example.com/portainer)只設 Portainer 沒設 proxy 也去 strip 子路徑,結果 404
--trusted-origins https://portainer.example.com允許的來源網域,避免「Origin invalid」只寫網域沒帶 https://(新版要求完整 URL,可含埠號)
--trusted-proxies 10.0.0.0/24哪個 proxy 的轉發標頭可信沒設導致登入紀錄的來源 IP 全是 proxy IP

反向代理的實際設定可以直接抄站上既有文章:Traefik 完整教學(Docker Labels 自動路由)、Nginx 反向代理完整教學、Caddy 完整教學。三篇都有對應的 WebSocket/長連線設定,Portainer 的 UI 需要它。

用 Stack 管一組服務

Stack 就是 Portainer 對 compose 專案的稱呼:一個 stack 可以包含 web server、資料庫等多個 service。日常操作的重點:

  • 部署:Stacks → Add stack,可貼上 compose 內容、從 Git repo 拉、或上傳檔案。
  • 更新:改完按 Update,Portainer 會重建有變動的容器,其他不動。
  • Webhook:每個 stack 可產生 webhook URL,讓 CI/腳本觸發重新部署,不必登入 UI。
  • 映像有新版的提示:啟用 image update indicator 後,stack 列表會用綠勾/橘叉標示「遠端 registry 是否有新映像」,按一下即可重查。
  • 孤兒 stack:若某個 environment 被刪掉,它的 stack 會變成 orphaned,要用右上角選單「Show all orphaned stacks」找回並重新綁定。

對個人自架,最常用的其實是「把原本手打的 docker-compose.yml 搬進來」,之後改環境變數、看 log、重啟都在同一個畫面完成。

備份與還原:備份那個 volume 就好

Portainer 的狀態全在 /data(volume portainer_data)裡,所以備份邏輯很單純:

# 備份(先停容器,避免 BoltDB 寫入中)
docker stop portainer
docker run --rm -v portainer_data:/data -v "$PWD":/backup alpine \
  tar czf /backup/portainer-data-$(date +%F).tar.gz -C /data .
docker start portainer

還原時把 tar 解回同名 volume、docker start 即可。兩個實務注意:

  1. 資料庫變大後啟動會慢,官方提供 --compact-db 啟動參數,可在啟動時壓縮資料庫回收空間。
  2. 有啟用 Git 部署的 stack,repo 會被 clone 進 data volume,多個大 repo 會把 volume 撐大;官方 requirements 頁特別提醒這件事,也要注意不要讓它把磁碟吃滿。

升級流程也簡單:改 image tag(或 docker pull),重建容器,volume 不動。

常用 CLI 旗標速查

旗標用途
--bind / -p指定 HTTP 埠(預設 :9000)
--bind-https指定 HTTPS 埠(預設 :9443)
--data / -d資料目錄(預設 /data)
--base-url跑在子路徑時使用
--trusted-origins / --trusted-proxies反向代理環境必設
--log-level DEBUG排錯時開詳細 log
--log-mode JSON輸出 JSON 格式 log,方便餵給日誌系統
--hide-label隱藏帶特定 label 的容器
--snapshot-interval 5m環境快照間隔(預設 5 分鐘)
--templates <url>自訂 App Templates 來源
--compact-db啟動時壓縮資料庫
--edge-compute / --edge-tunnel-server-addressEdge 功能相關設定

完整清單在官方文件「CLI configuration options」頁,本文只挑日常會動到的。

多少錢:CE 免費,付費版的界線在哪

方案價格(官方定價頁,2026-10-27)適用
Community Edition(CE)免費,zlib 授權,無支援、無 SLAhomelab、學習、個人專案
Business Edition 免費試用3 nodes 免費、無時間限制想先試 BE 功能
Home & StudentUS$155/年,最多 15 nodes,限非商業用途個人 lab、學生;商業使用會被撤銷授權
StarterUS$1,045/年(5/10/15 nodes,每節點上限 16 vCPU)小團隊;每家公司限一份
ScaleUS$2,095/年(5–25 nodes,每節點上限 24 vCPU)成長中團隊,含 9x5 次工作日支援
Enterprise詢價(32 vCPU 以上、無限節點、選配 24/7)生產環境、需合規與專屬支援

計價單位是「節點」而不是「人頭」:一台跑 Portainer Server 的機器、或任何被它管理的機器(含 Raspberry Pi、VM、筆電)都算一個 node,並以 vCPU 數分級。

與其他自架方案的定位差異

以下為定性比較(功能定位與適用場景),不是實測 benchmark:

方案定位相對優勢相對弱點
Portainer通用容器管理 UI,支援 Docker/Swarm/K8s/Podman多環境集中管理、Stack 與 App Templates、Agent/Edge Agent 拓撲成熟CE 明確非生產定位;企業治理功能在 BE
Coolify自架版 Vercel/Heroku(PaaS 式部署)Git push 自動部署、300+ 一鍵服務不是「看懂現有容器」的工具,是「幫你部署」的工具;可參考站上 Coolify 教學
Dockge輕量的 compose stack 管理器極簡、直接對應 compose.yaml功能面窄,沒有多節點與企業治理
純 CLI + compose標準做法零額外元件、可版控、最透明多機器與多人協作時吃人力

選型一句話:已經有一堆既存容器要「看與管」→ Portainer;要「從 Git 部署新服務」→ Coolify;只有單機幾個 compose 檔 → Dockge 或直接 CLI。

已知限制與踩雷點(官方自述+查證補充)

  1. CE 不是生產級產品:官方 README 明列 CE 為 homelab/學習用途,不支援生產環境、無 SLA、無回應保證。要在公司跑,官方要求買 BE。
  2. setup token 有時效:全新實例必須在 5 分鐘內建立管理員,否則要重來;腳本化部署要用 --setup-token 或 --admin-password-file。
  3. 需要 root 級 Docker 存取:預設掛 /var/run/docker.sock、假設 Docker 以 root 執行;rootless Docker 有功能限制、需額外設定。
  4. SELinux 環境要 --privileged:官方文件直接寫明,若機器啟用 SELinux 需加 --privileged——等於再放大一次權限,資安上要自己評估。
  5. Agent 是 legacy:傳統 Agent 不支援 edge 功能與 policy;跨網段請用 Edge Agent(不需開埠)。
  6. 本文未實測的部分:沒有實際部署多節點 Edge、沒有跑 BE 的 RBAC/GitOps、沒有做 K8s 環境測試;上述行為描述皆來自官方文件,版本與價格以查證當日官網為準。

誰適合、誰不需要

適合:有一台以上的 Docker 主機、想用網頁集中管理;常需要看 log/重啟/改 compose;要給非工程背景的家人或同事一個「只能按按鈕」的入口;想用 App Templates 快速起常見服務。

不需要:只有一個 compose 檔、服務幾乎不改;已經用 Coolify 之類 PaaS 全自動部署;公司有合規要求但沒有預算買 BE——那反而應該跳過 CE,避免把非生產工具放進生產。

站內延伸閱讀

資料來源與查證方法

  • 官方文件:docs.portainer.io 的 Install CE with Docker on Linux、Requirements and prerequisites、CLI configuration options、Stacks、Install Portainer Agent on Docker Standalone、setup token FAQ(皆為 2026-10-27 讀取,可直接在頁面網址後加 .md 取得 Markdown 原檔)。
  • 官方 repo:portainer/portainer README(CE/BE 定位與授權說明)、GitHub API(stars 38,731、zlib 授權、最後推送 2026-10-27、最新 release 2.45.3 於 2026-10-21 發布)。
  • 定價:portainer.io/pricing 與 portainer.io/homeandstudent(2026-10-27)。
  • 版本/相容性:官方 requirements 頁的 CE 版本對照表(CE 2.45.3 LTS 標示 2026-10-22)。
  • 安全公告:GHSA-x626-fcwx-f5pc(setup token 機制的由來)。
  • 未查證項目:Dockge、Coolify 的功能描述為定性整理,未在本次做同環境實測;若要做正式選型,建議以各自官方文件核對當下版本。

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友