你不需要懂程式,就能在 NAS 上跑 Docker。

從零開始理解 Docker:用生活化比喻解釋映像檔、容器、Volume,搭配 Synology Container Manager 實際跑起第一個服務,不需要程式基礎。

NAS 圈最常聽到「Docker」,但很多人裝好 NAS 之後還是搞不清楚它到底是什麼。

套件中心裝不到的服務,別人說「用 Docker」。Jellyfin、Vaultwarden、Immich,教學文章全部叫你跑 Docker。但 Docker 聽起來很程式、很技術,不懂指令的人要怎麼開始?

這篇從頭說清楚 Docker 是什麼,以及 Synology 的 Container Manager 怎麼讓你完全不用打指令就能跑服務。


🎯 這篇適合誰

你的情況 建議先看哪段
完全不知道 Docker 是什麼 從頭看,先看「Docker 解決什麼問題」
知道概念,想知道 NAS 上怎麼跑 跳到「Container Manager」
想動手跑第一個容器 跳到「實作」
容器跑起來有問題 直接看「常見問題」

🔧 Docker 解決什麼問題

先從問題說起。

傳統安裝軟體的方式:把程式裝在機器上,共用同一套系統環境。問題是,每個程式可能需要不同版本的相依套件,裝多了就容易互相衝突。一個服務升級,可能把另一個服務搞壞。

Synology 的套件中心是官方管理的,他們控制了什麼版本、什麼服務可以裝,所以衝突問題比較少——但可以裝的服務也因此大幅受限。

Docker 的解法是:把每個程式連同它需要的環境一起「打包」,封在一個獨立的容器裡。

容器之間完全隔離,互不影響。A 服務升級、崩潰、重裝,B 服務完全不知道,繼續跑。這樣你就能在同一台 NAS 上同時跑十幾個服務,彼此和平共存。


📦 三個核心概念

映像檔(Image)

映像檔是程式的「安裝包」,裡面包含程式和它需要的所有執行環境,打包好了,隨時可以用。

比喻: 映像檔像食譜。食譜本身不是食物,不會變化,只是一份說明書。

映像檔從 Docker Hub 下載,例如 linuxserver/jellyfinvaultwarden/server 都是別人做好的映像檔,直接拿來用就好,不需要自己製作。大小從幾十 MB 到幾 GB 不等。

版本標籤(Tag): 映像檔名稱後面通常跟版本,例如 nginx:latestnginx:1.25latest 是最新版,一般用這個。如果你需要固定在某個版本不升級,才指定版本號。


容器(Container)

容器是映像檔「跑起來」後的實體。

比喻: 根據食譜做出來的菜就是容器。同一份食譜可以做出很多盤,每盤都是獨立的一份。

容器是動態的——可以啟動、停止、刪除、重建。刪掉一個容器,用同一個映像檔再建一個,跟原來一模一樣。


Volume(掛載目錄)

容器預設是「無狀態」的。容器刪掉,裡面的資料也跟著消失。

Volume 的作用是: 把 NAS 上的某個資料夾「掛進」容器,讓資料存在容器外面的 NAS 上,而不是在容器裡面。

比喻: 容器像密封廚房,Volume 是從外面開的窗口——食材從外面遞進來,做好的東西也能傳出去。

最重要的實際意義: 升級容器版本時,刪掉舊容器、跑新容器,Volume 裡的資料完全不受影響,設定和資料都還在。沒有 Volume,升級等於重頭來過。

掛載方式: 把 NAS 上的某個資料夾(例如 /docker/vaultwarden/)對應到容器內的路徑(例如 /data/)。容器寫入 /data/ 的東西,實際上就存在 NAS 的 /docker/vaultwarden/ 裡。

Docker 容器概念圖解


🔌 Port 對應是什麼

這是新手最常卡住的概念。

每個容器服務在容器內部跑在某個 Port(通訊埠)上。但從外面(你的瀏覽器)要連進去,需要把 NAS 的某個 Port 「對應」到容器的 Port。

比喻: NAS 是一棟大樓,Port 是房間號碼。容器住在地下室 80 號房,但大樓對外只開放 8080 室的門。你設定「外面的 8080 → 轉到地下室 80」,從外面進來就能找到那個容器。

格式是 本機 Port:容器 Port,例如: - 8080:80 — 連到 NAS 的 8080,會轉進容器的 80 - 3001:3001 — 連到 NAS 的 3001,轉進容器的 3001

Port 不能重複: 每個容器的本機 Port 不能跟其他服務衝突。8080 已被佔用的話,下一個服務就用 8081 或其他空閒的號碼。

怎麼知道容器要用哪個 Port? 每個映像檔的 Docker Hub 頁面都會說明,找到映像後看說明文件的 Port 欄位。


⚖️ 跟套件中心安裝的差別

套件中心安裝 Docker 容器
安裝方式 一鍵安裝 下載映像檔,設定後跑起來
可用服務 Synology 官方支援的才有 幾乎所有開源軟體都有
隔離性 共用系統環境,可能衝突 完全隔離,互不影響
更新方式 套件中心一鍵更新 拉新映像檔,重建容器
設定複雜度 簡單,新手友善 需要了解 Port、Volume 概念
資料管理 系統幫你管 自己指定 Volume 路徑

什麼時候用套件中心? 官方有支援的服務,例如 Synology Drive、Active Backup、Surveillance Station,套件中心裝最簡單,更新也省事。

什麼時候改用 Docker? 你想裝的服務套件中心沒有,或者需要比官方版更新的版本,或者想要更多控制彈性(例如 Vaultwarden、Immich、Jellyfin、Home Assistant)。


🐋 Synology 上的 Docker:Container Manager

Synology 把 Docker 包裝成「Container Manager」,安裝後透過 DSM 圖形介面操作,完全不需要打指令。

DSM → 套件中心 → 搜尋「Container Manager」→ 安裝

安裝完成後可以透過 GUI 操作: - 搜尋並下載映像檔(登錄表) - 建立容器、設定 Port 對應和 Volume 掛載 - 查看每個容器的狀態、CPU / 記憶體用量、即時記錄 - 貼上 docker-compose.yml 一鍵啟動多容器服務(專案頁面)

硬體限制: Container Manager 需要 x86_64 或 ARMv8 處理器,Plus 系列(DS923+、DS925+、DS1522+ 等)都支援。入門機 J 系列(DS223j 等)不支援。


🛠️ 實作:跑起第一個容器

以 Nginx 為例,這是最簡單的 Web 伺服器,用來練習最合適——映像小、下載快、跑起來馬上能驗證。

步驟一:下載映像檔

Container Manager → 登錄表 → 搜尋 nginx → 選 nginx:latest → 下載

下載進度在「登錄表」→「映像檔」頁面查看,完成後映像出現在清單。

步驟二:建立容器

Container Manager → 容器 → 新增 → 選擇 nginx 映像檔

填入設定: - 容器名稱: nginx-test(自訂,方便辨識) - Port 對應: 本機 8080 → 容器 80 - 自動重新啟動: 總是 - Volume: 這個練習不需要設定,Nginx 預設頁面不需要外部資料

步驟三:確認成功

瀏覽器開 http://NAS的IP:8080,看到「Welcome to nginx!」就成功了。

練完不需要了,到 Container Manager 把容器停止、刪除,完全不影響 NAS 其他任何東西。這是 Docker 的優點——測試完全沒有後遺症。


📄 docker-compose 是什麼

你在各種教學文章裡一定會看到 docker-compose.yml。這是一種把容器的所有設定(Port、Volume、環境變數)寫成一個檔案的方式,不需要在 GUI 裡一個一個填。

適合場景: 需要多個容器同時運作的服務。例如 Nextcloud 需要同時跑 Web 伺服器和資料庫,用 Compose 可以一次設定好兩者的關係和啟動順序。

Synology 怎麼用: Container Manager → 專案 → 新增 → 貼上 yaml 內容 → 完成。不需要 SSH,不需要指令。

很多開源服務的官方文件都會直接提供 docker-compose.yml 範例,複製貼上,改一下路徑,跑起來。


❓ 常見問題排解

容器建立後一直顯示「停止中」或「錯誤」?

點開容器 → 記錄,看最後幾行的錯誤訊息。常見原因: - Volume 路徑不存在: 先用 File Station 把資料夾建好再跑容器 - Port 衝突: 本機 Port 已被其他服務佔用,換一個號碼 - 映像檔下載不完整: 刪掉映像檔重新下載

容器重開機後沒有自動啟動?

建立容器時把「自動重新啟動」設為「總是」。如果當初沒設,可以進容器設定改。設好之後,NAS 重開機後所有服務都會自動恢復。

映像檔怎麼更新?

  1. Container Manager → 登錄表 → 搜尋同名映像檔 → 下載新版
  2. 停止舊容器
  3. 用相同的 Port 和 Volume 設定建立新容器
  4. 確認新容器正常後,刪除舊容器和舊映像檔

Volume 裡的資料完全不受影響,設定和資料都保留。

NAS 記憶體跑 Docker 夠嗎?

每個容器依服務不同,大概佔用 100MB–500MB 記憶體。原廠 2GB 記憶體的 NAS,同時跑超過 3–4 個容器可能會感覺變慢。需要擴充記憶體可以參考 NAS 記憶體升級指南

什麼是環境變數(Environment Variables)?

很多映像透過環境變數來控制行為,例如設定時區、語言、管理員密碼。在容器設定頁面的「環境」分頁填入。最常見的是 TZ=Asia/Taipei(設定時區),幾乎每個容器都建議加。


🧭 下一步

跑起第一個容器之後,下一步是開始裝真正實用的服務。Synology Container Manager 完整使用指南 有更詳細的設定說明(Volume 路徑慣例、環境變數、Compose 實際範例),NAS 必裝 Docker 服務推薦 整理了最值得裝的服務清單,可以直接從裡面挑一個開始試。


✨ 小結

Docker 說難不難,核心就三個概念:

  • 映像檔:程式的食譜,從 Docker Hub 下載
  • 容器:食譜跑起來的實體,可以任意建立和刪除
  • Volume:資料存在容器外面,升級不遺失

搞清楚這三件事,加上 Port 對應的邏輯,你就能看懂任何 Docker 安裝教學,跑起任何服務。

🔗 延伸閱讀

這篇有幫助嗎? 你不需要懂程式,就能在 NAS 上跑 Docker。