Docker 愈堆愈難管?Proxmox LXC 幫 home lab 分清服務邊界
3C 產品

Docker 愈堆愈難管?Proxmox LXC 幫 home lab 分清服務邊界

圖片:via XDA Developers — https://www.xda-developers.com/switched-from-docker-to-proxmox-lxcs-to-manage-my-home-lab/
TechLab 編輯部(譯)·

兩種 container 管嘅層次唔同,搬之前要計埋維護、備份同隔離

XDA 作者 Yash Patel 分享,佢個 home lab 由幾個 Docker container 長大到幾十個之後,每套 app 嘅 Compose file、環境變數、port、volume、網絡同更新方法開始愈積愈亂。佢最後將大部分長期服務搬入獨立 Proxmox LXC,用同一個 web 介面睇資源、開 console、做 snapshot 同備份,日常管理順手咗。不過,呢個經驗要睇清楚:佢換緊嘅主要係管理層次,唔代表 LXC 可以直接取代所有 Docker 工作。

LXC 管一套 Linux,Docker 管一組 app

Docker 常見做法係將 frontend、database、cache 呢類 app 元件拆成獨立 process,再用 image、network、volume 同 Compose 組成一套服務。Proxmox LXC 就屬於 system container,入面通常有完整 Linux userspace、套件管理、使用者同 init system,操作感覺近似一部細 Linux server。兩者都同 host 共用 kernel,資源開銷一般細過完整 VM,但日常管理思路差好遠。

作者鍾意 LXC,原因亦好實際:各個 app 嘅官方安裝指引如果叫你用 aptsystemctljournalctl,搬入 LXC 後通常可以照做;每個服務有自己 IP、filesystem 同套件,出事時較容易劃定範圍。對平時管理開幾部 Debian、Ubuntu server 嘅人嚟講,呢套方式確實自然。不過 Compose 本身亦可以用一份 YAML 管理整個 app stack、log 同生命週期,Docker 變亂好多時同目錄、命名、更新同監察規矩冇整理好有關。

Proxmox VE 9.2 Datacenter Dashboard,集中顯示節點、VM 同 container 資源狀態

圖片:Proxmox

分得開啲,維護工作亦會增加

將每個服務放入獨立 LXC,睇落整齊,但每個 container 都有一套 OS 套件、repository、SSH 設定同安全更新。十幾個 LXC 即係十幾套細 Linux 要照顧,時間耐咗容易出現版本飄移。Docker image 通常由開發者連依賴一齊打包,更新多數係拉新 image 再重建 container,設定寫喺 Compose 入面亦較易複製。熟悉 server 管理嘅人可能覺得 LXC 省事,想保持部署一致嗰批人反而會覺得 Docker 輕鬆啲。

所以,長期運行、官方有清楚 Linux 安裝文件、你又想逐部當 server 管嘅服務,擺入 LXC 幾合理。開發者主要發佈 OCI image 或 Compose stack、app 由多個元件組成、版本更新密,留喺 Docker 通常較貼合官方支援路線。硬要拆散一套 Docker-first app,再逐件手動裝入 LXC,只會將原本寫好嘅部署方式變成自己長期維護。

Proxmox 備份方便,但唔係所有資料都包

Proxmox 將 LXC snapshot、排程備份同 restore 放入同一套介面,更新前留低還原點,確實係作者覺得省心嘅核心。不過 snapshot 可唔可以用,仍然要睇 storage 類型同設定。更要小心係 mount point:由 Proxmox storage 管嘅額外 volume 可以設成跟 container 備份;直接由 host 掛入去嘅 bind mount 同 device mount,vzdump 只會保存相關設定,入面啲檔案唔會一齊備份

呢點對 NAS 同影音庫玩法特別重要。相片、文件或 Jellyfin 媒體如果由 host storage bind mount 入 LXC,見到 container backup 成功都唔等於資料已有副本,嗰批檔案要另外備份。Database 亦應該按 app 自己嘅建議做 dump 或一致性處理,唔好淨係靠 filesystem snapshot 就當完成災難復原。

隔離唔可以當成 VM 級數

Proxmox 建立新 LXC 時預設用 unprivileged container,container 入面嘅 root 會映射成 host 上冇特權嘅 UID,風險低過 privileged 模式。不過 LXC 始終直接用 host kernel,Proxmox 官方亦明講,完整 VM 有較強隔離;privileged container 只應放可信工作。為咗硬件 passthrough、Docker nesting 或特殊權限而放寬 AppArmor、開 privileged mode,更要先知道自己拆走咗邊層保護。

想喺 Proxmox 上保留 Docker,較穩陣嘅編排係開一部 QEMU VM 跑 Docker,再將其他適合逐套 Linux 管理嘅服務放入 unprivileged LXC。官方亦建議,重視較強 host 隔離或 live migration 嘅 application container,可放入 QEMU VM。對迷你電腦或 NAS home lab,LXC 同 Docker 混用通常最實際:先跟 app 官方支援嘅方式部署,再決定點樣劃分管理範圍,唔使為咗介面整齊而一次過搬走晒所有服務。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook