原生應用程式 vs Docker

我一直在想,原生 QNAP 應用程式與在 Docker 容器中運行相同應用程式有什麼優勢。

例如,我在我的機器上以 qpkg 方式安裝了 Emby Server,但也透過 docker 部署了一次,只是想看看有什麼不同。

想請大家討論一下這兩種選擇的優缺點。

一般來說,獨立應用程式應該有較少的額外負擔。這一切取決於它是如何編寫和實作的。執行非 QNAP 專用版本可能會讓你對應用程式有更多的彈性和控制權。實際情況可能有所不同(YMMV)。

原生應用程式以管理員權限運行,因此通過 Docker 安裝應用程式可以帶來很大的安全效益。(如果應用程式對外網開放,安全效益更為顯著)

我總是選擇 Docker 而不是原生執行。通常更新更好,安全性和控制性也更佳,備份與還原也方便許多,甚至還原到另一個系統時,停機時間也只需幾分鐘。

原生 QNAP 應用程式(QPKG)是直接透過 App Center 或手動安裝套件的方式安裝到 QTS/QuTS hero 作業系統上。我個人會使用它,因為:

  1. 安裝簡單(從 AppCenter 安裝)
  2. 保證能在 QNAP 平台上運行。
  3. 更容易獲得支援(可以在這裡或提交支援單)

但有時候確實因為 QA 流程,套件的更新速度可能會比較慢。

至於 Docker:

  1. 映像檔是直接從 dockerhub 拉取或手動建置,所以更新速度較快。
  2. 有時候要設定 Docker 的磁碟/儲存空間需要一些容器相關的知識。
  3. 如果打算將 GPU 直通給 Docker,會有一些學習曲線。

以我在這裡的經驗,我會針對一些「正式」的功能釋出 QPKG,而 PoC(概念驗證)和測試則會用 Docker 讓合作夥伴跑專案。qnapsvd

如果這些小功能運作良好,或許我們會請開發人員將它們遷移成正式的 QPKG 功能。