NAS 的「Docker」怎麼用:Container Manager 與 Portainer 的差異
nginx:latest 就是一個映像檔。2.2 NAS 環境與一般電腦的差異
在桌機上玩 Docker,很多細節可以隨便;但在 NAS 上,有幾個地方必須特別注意:
exec format error。/volume1/docker 這種形式,設定掛載時要填對。always 或 unless-stopped。三、Container Manager:Synology 的原生 Docker 管理工具
3.1 Container Manager 是什麼?怎麼安裝?
Container Manager 是 Synology 在 DSM 7.2 之後推出的官方套件,用來取代舊版的「Docker」套件。它的定位很明確:讓 Synology 使用者可以在圖形介面中完成大部分 Docker 操作,不需要打開 SSH 打指令。
安裝方式非常簡單:打開「套件中心」→ 搜尋「Container Manager」→ 安裝 → 開啟。安裝完成後,它會在 Docker 資料夾下建立工作目錄,並且在系統中啟用 Docker 服務。
要注意的是,若你的 DSM 版本還在 7.1 或更早,套件名稱仍然是「Docker」,功能相對陽春,沒有「專案」與「Compose」整合。這也是不少人建議乾脆升級 DSM 或直接改用 Portainer 的原因之一。
3.2 功能總覽:五個分頁搞定大小事
Container Manager 的介面設計得相當直覺,主要分成幾個區塊:
docker-compose.yml 內容,它會幫你建立一整組服務,之後也能透過「動作」重新部署。3.3 Container Manager 的優點與限制
優點方面,它與 DSM 深度整合,使用同一個帳號登入,不需要額外開帳號;介面有繁體中文,對台灣使用者友善;遇到問題時,官方文件與論壇討論都以它為主;此外,因為是官方套件,DSM 更新時相容性通常較有保障。
限制方面,它有幾個讓進階使用者卻步的地方。第一,它只能管理「本機」這一台 NAS 的 Docker,如果你家裡有兩台 NAS,就得開兩個視窗切來切去。第二,容器設定的可調整項目沒有 Portainer 那麼細,例如某些網路模式、進階的資源限制、容器複製等功能較為缺乏。第三,沒有內建的「應用範本(App Templates)」,每次部署都要自己查映像名稱與參數。第四,日誌檢視與事件記錄相對簡單,排查問題時資訊量較少。
四、Portainer:跨平台的通用 Docker 管理面板
4.1 Portainer 是什麼?
Portainer 是一套開源的 Docker 圖形化管理工具,本身也是用容器跑的。它的最大特色是跨平台、跨主機:不論你用的是 Synology、QNAP、Asustor、TrueNAS、Raspberry Pi 或雲端 VPS,只要有 Docker,就能裝 Portainer;而且一個 Portainer 介面可以同時管理多台 Docker 主機,這對有多台機器的人來說非常方便。
Portainer 分為社群版(CE,免費)與商業版(BE,付費)。對一般家庭使用者來說,CE 版的功能已經非常足夠,本文章也以 CE 版為主。
4.2 在 NAS 上安裝 Portainer
安裝 Portainer 最常見的方式是用一行指令,或者用 Compose 部署。若你不想開 SSH,也可以直接在 Container Manager 的「專案」裡貼上 Compose 內容來安裝,這一點後面會示範。
傳統的 docker run 指令如下(請在 SSH 中執行,或透過 Container Manager 的終端機):
docker run -d \
p 9000:9000 \
name portainer \
restart=always \
v /var/run/docker.sock:/var/run/docker.sock \
v portainer_data:/data \
portainer/portainer-ce:latest
這段指令做了幾件事:把 Portainer 的 9000 埠對應出來、設定開機自動重啟、把 Docker 的「控制插座」/var/run/docker.sock 掛進容器(這是 Portainer 能操作 Docker 的關鍵)、並把 Portainer 自己的設定資料存在名為 portainer_data 的 Volume 中。
啟動後,用瀏覽器打開 http://你的NAS IP:9000,第一次進入要設定管理員帳號(密碼至少 12 碼),設定完成就能開始使用。
資安提醒:把 docker.sock 掛進容器,等於把 Docker 的完整控制權交給該容器。請務必設定高強度密碼、不要把 9000 埠直接暴露到公網,最好只在家中內網使用,或透過 VPN 連線。
4.3 Portainer 的核心功能
Portainer 的功能相當完整,以下列出最常用的幾個:
五、Container Manager 與 Portainer 差異全面比較
5.1 功能比較表
比較項目
Container Manager
Portainer(CE)
來源與性質
Synology 官方套件
第三方開源容器
支援機種
僅 Synology DSM 7.2 以上
任何支援 Docker 的平台
安裝方式
套件中心一鍵安裝
需手動以容器方式部署
介面語言
繁體中文(跟隨 DSM)
以英文為主,部分版本可切換語言
多主機管理
不支援,僅本機
支援,可新增多個環境
Compose 支援
支援(稱為「專案」)
支援(稱為「Stacks」)
應用範本
有,內建多種一鍵部署範本
容器操作細節
基本齊全
更細緻,可複製、即時統計、Console
事件與日誌
基本日誌
完整事件記錄與日誌檢視
帳號與權限
與 DSM 帳號整合
自有帳號系統,支援 RBAC
更新方式
跟隨 DSM 套件更新
需自行更新容器映像
適合對象
新手、輕度使用者、單機環境
進階使用者、多機環境、需要精細控制者
5.2 使用情境:你該選哪一套?
如果你的情況符合以下描述,Container Manager 就很夠用:只有一台 Synology NAS、想跑三五個服務、不熟悉 YAML 語法、希望介面有中文、偏好「官方支援」帶來的安心感。對這樣的使用者來說,額外裝 Portainer 反而多一層學習成本。
但如果你的情況是:建議直接使用 Portainer。例如你有多台 NAS 或一台 NAS 加一台樹莓派;你經常需要部署多容器組合(網站+資料庫+反向代理);你喜歡用 Compose 檔案管理設定並版控;你需要查看詳細事件記錄來除錯;你想要應用範本快速試用新服務。這些都是 Portainer 明顯勝出的地方。
實務上,很多進階玩家會兩套並存:用 Container Manager 負責日常監看與快速重啟,用 Portainer 負責部署與管理複雜的 Stack。這樣做完全沒有衝突,因為兩者操作的是同一個 Docker 引擎,你在其中一邊建立的容器,另一邊也看得到。唯一要注意的是「不要同時在兩邊修改同一個容器」,以免設定互相覆蓋。
5.3 其他 NAS 品牌怎麼選?
順帶一提,如果你不是用 Synology:QNAP 的對應工具是「Container Station」,功能類似 Container Manager,也支援 Docker Compose;Asustor 則在 App Central 提供 Portainer,等於直接內建;TrueNAS SCALE 使用「Apps」搭配 Kubernetes,邏輯稍有不同。但不論哪一台,只要你願意,都可以自行安裝 Portainer 來統一管理。
六、實戰演練:部署你的第一個容器
觀念講完,接下來實際動手。我們用同一個服務「IT-Tools」來示範,分別用 Container Manager 與 Portainer 各部署一次,讓你直接感受兩者的操作差異。IT-Tools 是一個集合多種開發者工具的網頁,映像小、啟動快、不需要資料庫,很適合當第一個練習。
6.1 事前準備
/volume1/docker/it-tools,用來存放設定(這個服務其實不需要,但養成習慣)。確認 NAS 有網路可以連到 Docker Hub。
6.2 用 Container Manager 部署 IT-Tools
步驟一:下載映像
打開 Container Manager → 左側「註冊表」→ 搜尋 it-tools → 找到 corentinth/it-tools → 點「下載」→ 選擇 latest 標籤。
步驟二:建立容器
切到「映像」分頁 → 選取剛剛下載的映像 → 點「執行」→ 進入設定精靈。
容器名稱:it-tools
勾選「啟用自動重新啟動」
8080,容器埠填 80(TCP)「儲存空間設定」:此服務不需要,可略過
「環境」:不需要
其餘保持預設,按「完成」
步驟三:驗證
在瀏覽器輸入 http://你的NAS IP:8080,看到 IT-Tools 的首頁就成功了。回到 Container Manager 的「容器」分頁,你會看到 it-tools 正在執行,點進去看「詳細資料」可以看到它的連接埠與日誌。
步驟四:用「專案」部署(Compose 版)
如果你想體驗 Container Manager 的 Compose 功能,可以刪掉剛剛的容器,改用「專案」→「新增」→ 貼上以下內容:
services:
it-tools:
image: corentinth/it-tools:latest
container_name: it-tools
ports:
- "8080:80"
restart: unless-stopped
按下「下一步」→「完成」,Container Manager 會自動下載映像並啟動。之後要更新,只要在專案页面按「動作 → 重建」即可。這也是 Container Manager 相對於舊版 Docker 套件最大的进步。
6.3 用 Portainer 的 Stack 部署同一個服務
假設你已經安裝好 Portainer 並完成管理員帳號設定,流程如下:
步驟一:登入
打開 http://你的NAS IP:9000,使用剛才設定的帳密登入,選擇「local」環境。
步驟二:建立 Stack
左側選「Stacks」→「Add stack」→ 名稱填 it-tools → 在 Web editor 貼上:
services:
it-tools:
image: corentinth/it-tools:latest
container_name: it-tools
ports:
- "8080:80"
restart: unless-stopped
按「Deploy the stack」。Portainer 會自動拉取映像並啟動容器,完成後在容器列表就能看到它。
步驟三:觀察差異
在 Portainer 裡,你可以點進容器看「Logs」、「Stats」、「Inspect」,甚至直接在 Console 裡執行指令。也能在「Events」分頁看到剛才部署時發生的所有事件。這些細節是 Container Manager 比較缺乏的部分。
步驟四:更新服務
要更新映像時,Portainer 的做法是:Stacks → 選取 it-tools → 按「Editor」→ 修改或保留內容 → 勾選「Re-pull image and redeploy」→ 按 Update。這樣就會重新拉取最新映像並重建容器,資料不會遺失(前提是有正確掛載資料卷)。
6.4 進階:加上反向代理與 HTTPS
當你部署的服務越來越多,用「IP+Port」記住每個服務會變得很痛苦。這時可以再部署一個 Nginx Proxy Manager(簡稱 NPM),把 tools.yourdomain.com 指向 NAS 的 8080,並自動申請 Let's Encrypt 憑證。這樣每個服務都有好記的網域與 HTTPS,使用體驗會提升一個檔次。
NPM 本身也是用 Docker 部署,而且很適合當作 Portainer 的第一個「正式專案」。它的 Compose 大致如下(記得把連接埠與資料夾改成你自己的):
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
ports:
- "80:80"
- "443:443"
- "8181:81"
volumes:
- /volume1/docker/npm/data:/data
- /volume1/docker/npm/letsencrypt:/etc/letsencrypt
restart: unless-stopped
部署完成後,用 http://NAS IP:8181 進入管理介面(預設帳號 [email protected]、密碼 changeme,登入後務必立刻修改),就可以開始設定 Proxy Host。這部分內容較多,之後有機會再單獨寫一篇完整教學。
七、常見問題與資安注意事項
7.1 新手最常踩的十個雷
exec format error,通常是抓到 ARM 映像但機器是 x86,或反過來。解法是到映像頁面確認支援的架構,或改用多架構映像。/config、/data 這類路徑有對應到 NAS 資料夾。restart: unless-stopped。/volume1/docker)要納入備份計畫,尤其是資料庫類服務。latest 標籤雖然方便,但有時更新會帶來 breaking change。重要服務建議固定版本號,例如 :1.2.3。7.2 安全性補充
Docker 容器本身不是沙盒,尤其是掛載了 docker.sock 的 Portainer,等同於擁有 NAS 的最高權限。因此請務必做到以下幾點:Portainer 密碼使用密碼管理器產生高強度密碼;只在家中內網或 VPN 環境使用;定期更新 Portainer 映像;不要在容器內執行來路不明的映像;若 NAS 有對外開放,務必設定防火牆規則,僅允許必要 Port。
另外,Synology 的 Container Manager 因為與 DSM 帳號整合,安全性取決於你的 DSM 帳號強度,建議開啟兩步驟驗證,並避免使用預設的 admin 帳號名稱。
八、結語:先求有,再求好
回到最初的問題:NAS 的 Docker 該用 Container Manager 還是 Portainer?答案其實不是二選一,而是「依階段選擇」。剛開始接觸 Docker 時,Container Manager 的中文介面與官方整合可以讓你快速上手,先把「下載映像、建立容器、設定連接埠與掛載」這幾個基本動作練熟。等你開始覺得「怎麼這個功能沒有」、「怎麼不能管理另一台機器」時,就是安裝 Portainer 的時機了。
兩者操作的是同一個 Docker 引擎,資料是共通的,所以你隨時可以切換,不必擔心「裝了 A 就不能用 B」。真正重要的是觀念:映像與容器的差別、資料卷的重要性、連接埠與網路的概念、以及資安的基本意識。把這些搞清楚,工具只是輔助,換成哪一套你都能順利上手。
最後給初學者一個建議:不要一次就想把所有服務搬到 NAS 上。先從一個最簡單、最不重要的服務開始(例如 IT-Tools 或 Uptime Kuma),成功跑起來、玩壞了再重來,累積幾次經驗之後,你自然就會知道自己的 NAS 適合什麼樣的玩法。Docker 的世界很大,慢慢探索就好。
💬 想說點什麼?
歡迎到留言板分享你的想法、心得或疑問。
💬 前往留言板 →