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

