資料持久化設定
容器重建不丟資料 —— 這一步千萬別跳過
血淚教訓
😱 升級容器後資料全沒了?
你滿心歡喜地升級了容器映像,重啟之後發現 —— 設定沒了,資料沒了,之前改的所有東西全部歸零。這不是 bug,這是 Docker 的正常行為:容器是暫時的,刪掉就啥都不剩。你不做持久化,它就不幫你存。
解決方案
✅ Docker Volume Mapping 一招搞定
用 Docker volume mapping 把容器內的重要目錄映射到宿主機的物理路徑上。容器隨便刪、隨便重建,只要映射路徑裡的檔案還在,資料就不會丟。這是 Docker 最基本也最重要的操作,沒有之一。
四步搞定持久化
1
建立目錄結構
在 NAS 上建立好資料目錄。目錄結構清晰,後面備份遷移都方便。建議按功能分成 data、config、logs、memory 四個子目錄。
2
映射卷到容器
在 docker-compose.yml 或者 Docker 管理介面裡,把宿主機目錄映射到容器內對應的路徑。映射之後容器寫入的資料實際上就存在 NAS 硬碟上了。
3
設定定時備份
雖然資料已經在 NAS 上了,但 RAID 保護不了你手滑刪檔案。寫個簡單的備份腳本,配合 cron 定時跑,多一層保險。
4
驗證恢復流程
別光備份不測試。把容器刪掉重建一次,確認資料還在、設定還生效、服務能正常啟動。等到真出事的時候再發現備份是壞的就晚了。
Volume 映射示例
下面是推薦的目錄結構和映射方式,適用於群暉、威聯通、Unraid 等所有 NAS:
docker-compose.yml 卷映射
services:
自動備份腳本
寫個指令碼,每天自動打包一份備份。保留最近 7 天的,自動清理舊的:
備份指令碼
#!/bin/bash
定時任務設定
把備份指令碼加到 cron 裡,每天凌晨 3 點自動執行:
crontab 定時備份
# 編輯 crontab
RAID 不是備份!RAID 保護你的資料不因為單塊硬碟掛掉而遺失,但它保護不了你誤刪檔案、ransomware 加密、NAS 主機板燒了、家裡遭賊這些情況。真正的備份策略是 3-2-1:3 份資料、2 種介質、1 份異地。至少把備份檔案同步到一個雲盤或者另一台設備上。
進階備份方案
如果你對資料安全要求更高,可以看看進階備份教學,裡面講了增量備份、加密備份、雲端同步等方案:
不想自己管資料備份?MOLILI 的託管方案自帶自動備份和資料復原功能,省心。
了解 MOLILI →