Docker遷移及存儲擴容遇到的問題
Docker遷移及存儲擴容
1. 問題概述
在 CentOS 系統(tǒng)上,由于 /var/lib/docker 目錄所在的 / 根分區(qū)空間有限,僅 50GB,導致 Docker 容器運行時存儲受限。
希望將 Docker 數(shù)據(jù)目錄遷移至 /home 分區(qū),該分區(qū)有 5.4TB 可用空間。
2. 具體問題及解決措施
問題 1:刪除日志后磁盤空間未釋放
- 問題描述:手動刪除
/var/lib/docker/containers/*-json.log日志文件后,df -h依然顯示空間未釋放。 - 原因分析:Docker 進程仍然持有已刪除文件的引用,導致空間未立即釋放。
- 解決措施:
重啟 Docker 進程:
systemctl restart docker
使用 truncate 命令清空日志文件(避免直接刪除):
truncate -s 0 /var/lib/docker/containers/*/*-json.log
問題 2:如何擴展 Docker 存儲空間
- 問題描述:希望為 Docker 分配 500GB 以上存儲空間,但
/var/lib/docker目錄默認位于 50GB 根分區(qū),空間受限。
解決措施:
在 /home 目錄下創(chuàng)建新的 Docker 數(shù)據(jù)存儲路徑:
mkdir -p /home/docker
修改 Docker 配置文件 /etc/docker/daemon.json:
{
"data-root": "/home/docker"
}
停止 Docker 進程:
systemctl stop docker
同步 Docker 舊數(shù)據(jù)到新目錄:
rsync -a /var/lib/docker/ /home/docker/
刪除舊目錄并創(chuàng)建符號鏈接:
rm -rf /var/lib/docker ln -s /home/docker /var/lib/docker
重啟 Docker 服務:
systemctl start docker
問題 3:遷移后容器和鏡像丟失
- 問題描述:遷移 Docker 數(shù)據(jù)目錄后,執(zhí)行
docker ps -a和docker images發(fā)現(xiàn)容器和鏡像為空。
原因分析:
發(fā)現(xiàn)容器和鏡像仍然存儲在 /home/docker/docker 目錄,而 daemon.json 配置的是 /home/docker,導致 Docker 讀取錯誤路徑。
解決措施:
修改 /etc/docker/daemon.json 配置:
{
"data-root": "/home/docker/docker"
}
重啟 Docker 服務:
systemctl restart docker
確認容器和鏡像恢復:
docker ps -a docker images
3. 最終結(jié)果
- 成功將 Docker 數(shù)據(jù)目錄遷移至
/home/docker/docker,并釋放了/var/lib/docker目錄占用的 50GB 空間。 - 通過修改
daemon.json確保 Docker 讀取正確的數(shù)據(jù)目錄,容器和鏡像恢復正常。 - 未來如果仍需擴容,可以進一步調(diào)整 LVM 或者掛載新的磁盤至
/home/docker以滿足存儲需求。
總結(jié)
本次 Docker 存儲遷移主要遇到了以下關(guān)鍵點:
- 刪除日志文件后仍占用空間 → 需要
truncate或者重啟 Docker。 - 存儲空間擴展 → 通過
/home目錄存儲 Docker 數(shù)據(jù),避免 50GB 根分區(qū)限制。 - 遷移后容器和鏡像丟失 → 需確保
data-root指向正確目錄/home/docker/docker。
通過上述步驟,Docker 遷移及存儲擴展問題已成功解決。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker部署nginx下日志自動切割方法實現(xiàn)
部署Nginx在Docker中時,其日志文件默認不會自動切割,與非Docker環(huán)境有所不同,本文介紹了三種日志切割方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10

