Docker遷移及存儲(chǔ)擴(kuò)容遇到的問題
Docker遷移及存儲(chǔ)擴(kuò)容
1. 問題概述
在 CentOS 系統(tǒng)上,由于 /var/lib/docker 目錄所在的 / 根分區(qū)空間有限,僅 50GB,導(dǎo)致 Docker 容器運(yùn)行時(shí)存儲(chǔ)受限。
希望將 Docker 數(shù)據(jù)目錄遷移至 /home 分區(qū),該分區(qū)有 5.4TB 可用空間。
2. 具體問題及解決措施
問題 1:刪除日志后磁盤空間未釋放
- 問題描述:手動(dòng)刪除
/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 存儲(chǔ)空間
- 問題描述:希望為 Docker 分配 500GB 以上存儲(chǔ)空間,但
/var/lib/docker目錄默認(rèn)位于 50GB 根分區(qū),空間受限。
解決措施:
在 /home 目錄下創(chuàng)建新的 Docker 數(shù)據(jù)存儲(chǔ)路徑:
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)建符號(hào)鏈接:
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)容器和鏡像仍然存儲(chǔ)在 /home/docker/docker 目錄,而 daemon.json 配置的是 /home/docker,導(dǎo)致 Docker 讀取錯(cuò)誤路徑。
解決措施:
修改 /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以滿足存儲(chǔ)需求。
總結(jié)
本次 Docker 存儲(chǔ)遷移主要遇到了以下關(guān)鍵點(diǎn):
- 刪除日志文件后仍占用空間 → 需要
truncate或者重啟 Docker。 - 存儲(chǔ)空間擴(kuò)展 → 通過
/home目錄存儲(chǔ) Docker 數(shù)據(jù),避免 50GB 根分區(qū)限制。 - 遷移后容器和鏡像丟失 → 需確保
data-root指向正確目錄/home/docker/docker。
通過上述步驟,Docker 遷移及存儲(chǔ)擴(kuò)展問題已成功解決。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Docker Compose實(shí)現(xiàn)秒級(jí)擴(kuò)容的方法步驟
- 解決docker目錄內(nèi)存不足擴(kuò)容處理方案
- Docker配置Redis集群及主從擴(kuò)容與縮容的操作方法
- docker overlay擴(kuò)容問題
- Rancher+Docker+SpringBoot實(shí)現(xiàn)微服務(wù)部署、擴(kuò)容、環(huán)境監(jiān)控
- 關(guān)于docker?compose安裝redis集群的問題(集群擴(kuò)容、集群收縮)
- Docker進(jìn)階之快速擴(kuò)容的方法
- 詳解docker容器硬盤動(dòng)態(tài)擴(kuò)容
- Docker Swarm自動(dòng)擴(kuò)容的陷阱(3個(gè)致命誤區(qū))
相關(guān)文章
Docker部署Minio集群的實(shí)現(xiàn)步驟
本文介紹 Docker Compose 部署 Minio 集群的方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-05-05
Docker核心知識(shí)點(diǎn)和常用指令(命令)速通
Docker是一種容器化平臺(tái),它通過容器技術(shù)將所有依賴項(xiàng)打包到一個(gè)鏡像中,再通過鏡像運(yùn)行一個(gè)獨(dú)立并且可移植的容器,這篇文章主要介紹了Docker核心知識(shí)點(diǎn)和常用指令(命令)的相關(guān)資料,需要的朋友可以參考下2026-04-04
使用docker極簡打包java.jar鏡像并啟動(dòng)的操作步驟
這篇文章主要介紹了用docker極簡打包java.jar鏡像并啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
docker安裝opengauss數(shù)據(jù)庫配置過程詳解
這篇文章主要為大家介紹了docker安裝opengauss數(shù)據(jù)庫配置過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Docker安裝Nginx并修改Nginx配置文件的方法詳解
這篇文章主要給大家介紹了關(guān)于Docker安裝Nginx并修改Nginx配置文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02
詳解修改docker啟動(dòng)默認(rèn)網(wǎng)橋docker0為自定義網(wǎng)橋
本篇文章主要介紹了詳解修改docker啟動(dòng)默認(rèn)網(wǎng)橋docker0為自定義網(wǎng)橋 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

