如果你在 Synology NAS 上跑了不少 Docker 服務,大概對 Container Manager 又愛又恨——基本操作還可以,但一旦容器多起來,要追蹤每個服務的設定、Log、網路關係,就會發現它的介面開始捉襟見肘。Portainer 是社群最廣泛使用的 Docker 管理 UI,它不取代 Docker,而是架在 Docker 上方提供更完整的視覺化操作,包含 Stacks(等同 docker-compose)管理、即時 Log、容器 Terminal,以及 Network、Volume 的全局視圖。
這篇文章帶你在 Synology NAS 上安裝 Portainer CE(Community Edition),包含 docker-compose 設定、首次 admin 帳號設定,以及主要功能的實際使用說明。
為什麼要用 Portainer?Container Manager 的不足
Synology Container Manager(舊名 Docker 套件)的問題主要有幾個:
無法管理 Stacks:Container Manager 可以匯入 docker-compose.yml,但一旦匯入後,修改設定必須整個刪除重建,沒辦法像真正的 Compose 那樣做版本化管理。Portainer 的 Stacks 功能可以直接在介面上編輯 docker-compose.yml 並重新部署,方便許多。
Log 查看受限:Container Manager 的 Log 視窗無法持續串流,也不能依時間篩選。Portainer 提供即時 streaming log,Debug 時省很多時間。
無容器 Terminal:想進入容器執行指令,Container Manager 完全沒有這個功能,只能 SSH 進 NAS 後再 docker exec。Portainer 內建 Web Terminal,點一下就能進容器。
網路視圖缺乏:多個服務共用自訂 bridge network 時,Container Manager 很難看清楚哪個容器在哪個網路。Portainer 有完整的 Network 視圖。
如果你目前用 Container Manager 完整教學 建立了基礎,Portainer 是很自然的下一步升級。
架構說明
Portainer 由兩個元件組成:
Portainer Server:提供 Web UI,你透過瀏覽器連接這個容器(port 9443),所有管理操作都在這裡完成。
Portainer Agent:跑在被管理的 Docker 主機上,監聽 Docker Socket,讓 Server 能取得容器、映像、Volume 等資訊。在單機(NAS 自己管自己)的情境下,兩者都裝在同一台 NAS 上。
這個架構的好處是:未來如果你有第二台 NAS 或其他 Linux 主機,只要在上面裝 Portainer Agent,同一個 Portainer Server 就能統一管理多台主機。
安裝前準備
- 確認 NAS 已安裝 Container Manager(DSM 套件中心搜尋「Container Manager」)
- 準備一個存放設定的目錄。建議在
/volume1/docker/portainer/下建立data/子目錄供 Portainer 儲存設定
mkdir -p /volume1/docker/portainer/data
安裝 Portainer CE
在 Container Manager → Project → 建立新專案,或直接使用 SSH 建立以下 docker-compose.yml:
# /volume1/docker/portainer/docker-compose.yml
version: "3.8"
services:
portainer-agent:
image: portainer/agent:latest
container_name: portainer_agent
restart: always
ports:
- "9001:9001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9443:9443"
- "8000:8000"
volumes:
- /volume1/docker/portainer/data:/data
depends_on:
- portainer-agent
Port 說明: -
9443:HTTPS 管理介面(建議只開這個) -8000:Edge Agent 使用(管理遠端主機用,單機可不開) -9001:Portainer Agent 通訊 port
啟動後,等待 30 秒讓容器完全啟動。
首次設定 Admin 帳號
開啟瀏覽器,進入 https://NAS-IP:9443(因為是自簽憑證,瀏覽器會出現安全性警告,點「繼續前往」即可)。
第一次進入需要在 5 分鐘內設定管理員帳號,超過時間會自動鎖定,需要重啟容器。
設定步驟: 1. 輸入管理員用戶名和密碼(至少 12 字元,建議使用密碼管理器產生強密碼) 2. 點「Create user」 3. 選擇環境:選「Get Started」→ 點選本機的 Docker 環境 4. 等候幾秒後,即可進入主控台
進入後,左側選單就是 Portainer 的主要功能區。
主要功能介紹
Stacks:docker-compose 的正確管理方式
Stacks 是 Portainer 最重要的功能。點左側「Stacks」→「Add Stack」,可以直接貼上 docker-compose.yml 的內容,Portainer 會幫你部署並持續追蹤這個 Stack 的狀態。
已部署的 Stack 可以在介面上直接編輯 YAML 並「Update the stack」,不需要進 SSH。每次更新 Stack,Portainer 會自動 pull 最新 image 並重建容器。
建議:把所有服務都改用 Portainer Stacks 管理,包括你原本在 Container Manager 建立的服務。遷移方式是停掉舊容器、刪除,再在 Portainer 建立同名 Stack。
Containers:即時 Log 與 Web Terminal
點選任一容器,可以看到詳細資訊:
- Logs:即時串流日誌,支援關鍵字搜尋、時間戳顯示
- Console:直接在瀏覽器裡進入容器的 Terminal(等同
docker exec -it container bash) - Stats:即時 CPU / RAM / 網路用量圖表
- Inspect:完整的容器設定 JSON(需要閱讀或複製時,可貼到 JSON 格式化工具 整理格式)
這個 Console 功能在 Debug 時非常好用。例如要進 Vaultwarden 容器查設定、或進 Immich 容器執行資料庫遷移,都可以直接在瀏覽器操作,不需要 SSH。
Images:映像管理
顯示所有已下載的 Docker Image,可以直接在這裡: - Pull 新映像(輸入完整的 image tag) - 刪除不再使用的舊版本,釋出磁碟空間 - 查看每個 layer 的大小
建議定期到這裡清理不需要的映像,NAS 磁碟空間有限。
Volumes:Volume 視覺化
列出所有 Docker Volume 及其佔用大小、掛載狀態。特別實用的是「不使用中的 Volume」篩選——可以找出容器刪除後遺留的孤兒 Volume 並清理。
如果你把 Docker 移到 NVMe 儲存空間(參考 Docker 移至 NVMe 教學),Volume 的路徑管理在 Portainer 會更清楚。
Networks:網路拓撲管理
顯示所有 Docker 網路(bridge、host、overlay、自訂網路),以及各網路下的容器清單。
建議服務之間的通訊用自訂 bridge network,避免全部丟在預設 bridge 上互相干擾。例如:
networks:
proxy_net:
external: true # 讓 NPM 和各服務共用同一個網路
Container Manager vs Portainer 比較
| 功能 | Container Manager | Portainer CE |
|---|---|---|
| 部署 docker-compose | 支援(匯入後無法在線編輯) | Stacks 完整支援,可線上編輯 |
| 即時 Log | 有限 | 串流 Log,可搜尋 |
| Web Terminal | 無 | ✅ 支援 |
| 容器 Stats | 基本 | 詳細圖表 |
| 多主機管理 | 無 | ✅ 支援(Agent) |
| Volume 孤兒清理 | 無 | ✅ 支援 |
| Network 視圖 | 基本 | 完整拓撲 |
| 介面語言 | 中文 | 英文(無官方中文化) |
| 資源消耗 | 極低 | 低(約 50–100 MB RAM) |
資安注意事項
絕對不要把 port 9443 對外開放。Portainer 擁有對整個 Docker 環境的完全控制權,一旦被入侵,攻擊者可以在你的 NAS 上部署任何容器。如果想確認 port 是否真的沒有對外暴露,可以在 PowerShell 執行 Test-NetConnection -ComputerName 你的WAN IP -Port 9443 從外部驗證。
正確的遠端存取方式:
- 只在區域網路內存取:絕大多數情況這就夠了
- 透過 Tailscale / VPN 存取:外出時先連 VPN 再開 Portainer,參考 Tailscale 完整教學
- 搭配 Nginx Proxy Manager 做反向代理:如果真的需要 HTTPS 域名存取,用 NPM 設定反向代理並加上 IP 白名單或 Basic Auth,參考 Nginx Proxy Manager 教學
另外,定期更新 Portainer 映像:在 Stacks 或 Containers 頁面可以直接 Pull 最新版並重啟。
常見問題
Q:Container Manager 和 Portainer 可以同時用嗎? 可以,兩者都在操作底層同一個 Docker Engine,不會衝突。只是建議選一個主要工具,避免搞混誰管哪個服務。
Q:Portainer CE 和 Business Edition 有什麼差別? CE 版免費,功能對個人和家用已完全足夠。Business Edition 多了 RBAC 角色管理、GitOps 整合、Kubernetes 支援等企業功能,個人 NAS 用不到。
Q:首次設定超過 5 分鐘沒設定 admin,怎麼辦?
重啟 portainer 容器:docker restart portainer,然後在 5 分鐘內設定。
Q:更新 Portainer 版本? 在 Stacks 頁面找到 portainer Stack,點「Pull and redeploy」,它會自動 pull 最新版並重啟。
🔗 延伸閱讀
- Container Manager 完整教學 — 從頭了解 Synology 的 Docker 管理環境
- Nginx Proxy Manager 反向代理設定 — 為 Portainer 設定 HTTPS 域名存取
- Tailscale 完整教學 — 在外出時安全存取 Portainer
- NAS 必裝 Docker 服務清單 — 確認還有哪些服務值得加進去管理