Docker加載鏡像時出現(xiàn) “no space left on device” 錯誤的解決方法
- 在 Docker 使用過程中,“no space left on device” 錯誤是常見的磁盤空間不足問題。本文將結(jié)合實戰(zhàn)操作,詳細(xì)介紹該問題的排查與解決步驟,幫助開發(fā)者快速定位并修復(fù)問題。
- 當(dāng) Docker 鏡像加載失敗并提示該錯誤時,通常是由于 Docker 數(shù)據(jù)目錄(默認(rèn)
/var/lib/docker)所在磁盤空間或 inode 耗盡導(dǎo)致。
一、磁盤空間與 inode 使用情況檢查
1. 檢查磁盤空間占用
- 通過
df命令查看 Docker 數(shù)據(jù)目錄的磁盤使用情況:
df -h /var/lib/docker
- 關(guān)鍵指標(biāo):關(guān)注
Use%列,若接近 100% 則說明空間不足 - 典型場景:鏡像文件過大、歷史鏡像堆積導(dǎo)致空間占滿
2. 檢查 inode 使用情況
- inode 是 Linux 存儲文件元數(shù)據(jù)的索引節(jié)點(diǎn),即使磁盤空間未耗盡,inode 耗盡也會導(dǎo)致寫入失?。?/li>
df -i /var/lib/docker
- 判斷標(biāo)準(zhǔn):若
IUse%接近 100%,需清理小文件釋放 inode
二、Docker 無用資源清理
1. 自動清理未使用資源
- 通過 Docker 內(nèi)置的清理命令釋放空間:
# 交互式清理,會提示確認(rèn)刪除停止的容器、懸空鏡像、未使用網(wǎng)絡(luò) docker system prune # 強(qiáng)制全量清理(生產(chǎn)環(huán)境謹(jǐn)慎) docker system prune -a --volumes
-a:刪除所有未使用的鏡像(包括 dangling 和 非 dangling)--volumes:同時刪除未使用的 Docker 卷
2. 手動精準(zhǔn)清理
如果自動清理不徹底,手動刪除特定鏡像或容器:
# 列出所有鏡像 docker images -a # 刪除指定鏡像 docker rmi <鏡像ID> # 列出并刪除已停止的容器 docker ps -a docker rm <容器ID>
三、清理 Docker 臨時文件
- 直接刪除Docker臨時目錄(確保操作安全)
# 警告:操作前停止Docker服務(wù) systemctl stop docker rm -rf /var/lib/docker/tmp/* systemctl start docker
四、遷移 Docker 存儲路徑(長期方案)
- 當(dāng)默認(rèn)分區(qū)空間不足時,可將數(shù)據(jù)目錄遷移至更大分區(qū)
# 停止服務(wù)
systemctl stop docker
# 創(chuàng)建新存儲路徑
mkdir /data/docker # 替換為實際路徑
# 修改Docker配置
echo '{ "data-root": "/data/docker" }' > /etc/docker/daemon.json
# 遷移現(xiàn)有數(shù)據(jù)(可選)
rsync -aqxP /var/lib/docker/ /data/docker # 保留權(quán)限和鏈接
# 重啟docker
systemctl start docker
- 驗證方法:執(zhí)行
docker info查看 “Docker Root Dir” 是否變更
五、擴(kuò)展磁盤空間(高級操作)
若分區(qū)容量不足:
- 使用
lvextend(LVM)或resize2fs調(diào)整分區(qū)大小。 - 掛載新磁盤到
/var/lib/docker。
掛載新磁盤
新增磁盤分區(qū)
fdisk /dev/sdb # 創(chuàng)建新分區(qū)并格式化為ext4/xfs
- 掛載到目標(biāo)目錄
mount /dev/sdb1 /var/lib/docker
- 設(shè)置開機(jī)自動掛載
echo "/dev/sdb1 /var/lib/docker ext4 defaults 0 0" >> /etc/fstab
六、實戰(zhàn)操作示例
# 檢查空間 df -h /var/lib/docker # 清理Docker docker system prune -a --volumes # 重新加載鏡像 docker load -i image-search-v1.tar
七、注意事項
- 數(shù)據(jù)備份:清理或遷移前務(wù)必備份重要鏡像和容器數(shù)據(jù)
- 路徑替換:所有涉及
/新存儲路徑的操作需替換為實際路徑 - 生產(chǎn)環(huán)境:執(zhí)行
prune -a等危險命令前需評估業(yè)務(wù)影響
通過以上步驟,可系統(tǒng)性解決 Docker 鏡像加載時的磁盤空間不足問題。建議定期執(zhí)行docker system prune進(jìn)行日常維護(hù),避免問題復(fù)發(fā)。
以上就是Docker加載鏡像時出現(xiàn) “no space left on device” 錯誤的解決方法的詳細(xì)內(nèi)容,更多關(guān)于Docker加載鏡像no space left on device的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker打包本地conda虛擬環(huán)境并遠(yuǎn)程部署的詳細(xì)過程
這篇文章給大家介紹docker打包本地conda虛擬環(huán)境并遠(yuǎn)程部署的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2026-03-03
docker?Get?https://registry-1.docker.io/v2/:?net/http:?r
本文主要介紹了docker?Get?https://registry-1.docker.io/v2/:?net/http:?request?canceled?報錯,具有一定的參考價值,感興趣的可以了解一下2025-03-03
docker-compose如何單獨(dú)更新某個服務(wù)
這篇文章主要介紹了docker-compose如何單獨(dú)更新某個服務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
詳解Docker容器運(yùn)行多條命令(supervisor)
本篇文章主要介紹了詳解Docker容器運(yùn)行多條命令(supervisor),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
用Docker swarm快速部署Nebula Graph集群的教程
這篇文章主要介紹了用Docker swarm快速部署Nebula Graph集群的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
docker網(wǎng)絡(luò)及部署集群和打包鏡像問題
這篇文章主要介紹了docker網(wǎng)絡(luò)及部署集群和打包鏡像問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08

